如何对相邻列中具有不同值的 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
假设我有以下 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