按变量结果表大小分组的条件总和

时间:2018-07-23 07:28:25

标签: sql postgresql group-by pivot

我对一个非常有趣的问题进行了跟进,该问题是关于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来完成某些原本不是为设计而更好地用代码完成的事情吗?

0 个答案:

没有答案