你不会想反正使用PIVOT & UNPIVOT ...他们是一个更大的痛苦比他们的价值。这应该做的伎俩......
IF OBJECT_ID('tempdb..#TestData', 'U') IS NOT NULL
DROP TABLE #TestData;
CREATE TABLE #TestData (
TypeId CHAR(5),
s100 MONEY,
s50 MONEY
);
INSERT #TestData(TypeId, s100, s50) VALUES
('Type1', 5000.00, 56760.00),
('Type2', 2345.00, 87650.00);
--SELECT * FROM #TestData td;
WITH
cte_Unpivot AS (
SELECT
td.TypeId,
d.Denom,
d.cValue
FROM
#TestData td
CROSS APPLY (VALUES (100, td.s100), (50, td.s50)) d (Denom, cValue)
)
SELECT
u.Denom,
Type1 = SUM(CASE WHEN u.TypeId = 'Type1' THEN u.cValue END),
Type2 = SUM(CASE WHEN u.TypeId = 'Type2' THEN u.cValue END)
FROM
cte_Unpivot u
GROUP BY
u.Denom
ORDER BY
u.Denom DESC;
结果...
Denom Type1 Type2
----------- --------------------- ---------------------
100 5000.00 2345.00
50 56760.00 87650.00
你是什么意思你没有2008年提供PIVOT/UNPIVOT ???这些功能绝对在2008年。 –
我们的管理员不会让他们使用是我的意思。 – ncsol
我同意Jason的看法,他们通常比他们的价值更痛苦。但是,您的管理员不能禁用这些功能,它们是sql server本地的。他们可能有一个公司规则,说明你不要使用它们。 ;) –