【发布时间】:2016-09-30 15:58:44
【问题描述】:
我无法弄清楚如何才能最好地创建此 SQL 查询的所需最终结果,而无需嵌套看起来很糟糕的 SELECT 语句。太可怕了。我觉得这可能与 PIVOT 有关,但我正在尝试找到最有效的方法。
我以简化这些表格为例。我有 2 个表:PRODUCTS 和 PRODUCT_PRICING。 PRODUCT_PRICING 表将在价格发生变化的每个星期包含每个产品的多个实例。
PRODUCTS
PKey | ProductName
------------------------
10 Hammer
24 Screw Driver
31 Nail
48 Wrench
PRODUCT_PRICING
PKey | ProductPKey | ProductPrice | WeekNumber
----------------------------------------------------------
1 10 10.00 20
2 10 9.50 21
3 24 6.00 21
4 31 0.01 15
5 31 0.02 21
6 48 7.50 21
我想要做的是传递一个星期数 (21) 并以这样的结构获得所有结果:
WeekNumber | HammerPKey | HammerPrice | ScrewDriverPKey | ScrewDriverPrice | NailPKey | NailPrice | WrenchPKey | WrenchPrice
21 10 9.50 24 6.00 31 0.02 48 7.50
【问题讨论】:
-
这很有帮助,但我担心每次都进行 MAX 计算会增加我的执行时间。然而,玩弄它,我想我能够用 INNER JOINS 创建一些对我有用的东西。谢谢你的帮助,纳林。
-
如果您的产品行数增加了怎么办?你的内部连接的复杂性是什么。我对解决方案感兴趣。
-
现在开始写 :) 产品行不会增加。这是我正在玩弄的一个幻想体育概念。我试图通过示例使其更简单,但这可能有点误导了这个想法。
-
您使用的是哪个 DBMS?