首页 > 解决方案 > 按可变结果表大小分组的条件总和

问题描述

我有一个关于我在 SO 上遇到的关于分组条件总和的非常有趣的问题的后续问题。这是问题

原来的问题

我有一个具有以下架构的表 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 用于它不是为它设计的并且在代码中更好地完成的东西?

标签: sqlpostgresqlgroup-bypivot

解决方案


推荐阅读