如何对相邻列中具有不同值的 SQL 中的多行求和

How to sum multiple rows in SQL which has different values in the adjacent column

假设我有以下 table:

fuel units total
diesel gallon 30
lpg gallon 20
cng gallon 50
diesel liter 10

我想在 SQL 服务器中执行 select 查询,该查询对 'diesel' 字段的值求和。以升为单位的柴油乘以转换系数,然后 结果应该是这样的。

fuel units total
diesel gallon 40

我可以将柴油从升转换为加仑并获得值,但我无法将加仑柴油与 table 分开并在转换后将其添加到升柴油中。

如果您只做 LITERS 和 GALLONS,那么条件聚合应该可以解决问题

示例或dbFiddle

Select fuel
      ,units = 'gallon'
      ,total = sum( case when units='liter' then total * 0.264172 else total end )
 From  YourTable
 Group By fuel

结果

fuel    units   total
cng     gallon  50.000000
diesel  gallon  32.641720
lpg     gallon  20.000000

编辑只是为了好玩。让我们也添加 Barrels

Declare @YourTable Table ([fuel] varchar(50),[units] varchar(50),[total] int)
Insert Into @YourTable Values 
 ('diesel','gallon',30)
,('lpg','gallon',20)
,('cng','gallon',50)
,('diesel','liter',10)
,('diesel','barrel',1)
 
Select fuel
      ,units = 'gallon'
      ,total = sum( case units when 'liter' then 0.264172 
                               when 'barrel' then 42
                         else 1 
                     end * Total )
 From  @YourTable
 Group By fuel

第二个结果

fuel    units   total
cng     gallon  50.000000
diesel  gallon  74.641720
lpg     gallon  20.000000