我正在尝试为具有特定产品的单位和基本单位旋转表格。我试图让我的最终结果只有一行。
Product Unit BaseUnit
Gas MMcf Mcf
Oil Mbbl bbl
Water Mgal gal
我的输出表应如下所示:
GasUnit GasBaseUnit OilUnit OilBaseUnit WaterUnit WaterBaseUnit
MMcf Mcf Mbbl bbl Mgal gal
之前我已经完成了一个数据透视表,但从来没有必要同时转动2列并将它们移动到一行。
这是我到目前为止所拥有的。我可以使用2个聚合吗?我不知道如何处理这个问题。
SELECT *
from
(
select Product, Unit, BaseUnit
from t
) x
pivot
(
sum(BaseUnit)
for Product in ([Gas], [Oil], [Water])
) p
答案 0 :(得分:1)
使用静态数据,这将获得输出表
WITH prep AS (
SELECT Product + ' Unit' TYPE, Unit Value
FROM utilities
UNION ALL
SELECT Product + ' BaseUnit' TYPE, BaseUnit Value
FROM utilities
)
SELECT [Gas Unit], [Gas BaseUnit]
, [Oil Unit], [Oil BaseUnit]
, [Water Unit], [Water BaseUnit]
FROM (SELECT TYPE, Value
FROM prep
) a
PIVOT
(MAX(Value)
FOR TYPE IN ([Gas Unit], [Gas BaseUnit]
, [Oil Unit], [Oil BaseUnit]
, [Water Unit], [Water BaseUnit])
) pvt
演示:SQLFiddle
使用动态数据,您需要使用动态查询来创建PIVOT列列表