我对一个非常有趣的问题进行了跟进,该问题是关于SO的按条件分组查询中的条件总和。这是question。
原始问题
我有一个具有以下模式的表OrderDetails:
----------------------------------------------------------------
| OrderId | CopyCost | FullPrice | Price | PriceType |
----------------------------------------------------------------
| 16 | 50 | 100 | 50 | CopyCost |
----------------------------------------------------------------
| 16 | 50 | 100 | 100 | FullPrice |
----------------------------------------------------------------
| 16 | 50 | 100 | 50 | CopyCost |
----------------------------------------------------------------
| 16 | 50 | 100 | 50 | CopyCost |
----------------------------------------------------------------
我需要一个查询,该查询将上面的表转换为具有以下模式的新表:
----------------------------------------------------------------
| OrderId | ItemCount | TotalCopyCost | TotalFullPrice |
----------------------------------------------------------------
| 16 | 4 | 150 | 100 |
----------------------------------------------------------------
当前,我在Order.Id上使用Group By来进行商品计数。但是我不知道如何有条件地推测CopyCost和FullPrice的值。
后续行动
如果您事先不知道价格类型,有什么方法可以做到?例如,如果所讨论的表| OrderId | CopyCost | FullPrice | Price | PriceType |
是在order
表和order_price_type
表上进行联接的结果?然后,根据order_price_types
表有多少行,汇总表的列数将发生变化?
这会使用sql来完成某些原本不是为设计而更好地用代码完成的事情吗?