我试图将结果行转换为列,但仅使用位值。为了更好地解释我的意思,我的桌子看起来像这样;
Id Item ------------------- 1 TextLineA 1 TextLineB 2 TextLineA
我想要实现的是这样的布局;
Id TextLineA TextLineB -------------------------- 1 True True 2 True False
抱歉我的格式不正确,但希望它能传达我想要的内容。我已经尝试过Pivot,但是我没有什么可总结的,因为我只想要true / false值而不是总和。
另外,我大约有15列,我不介意静态地将它们写出来。任何指针将不胜感激!
这种方法将解决此问题:
DECLARE @Example TABLE (Id int, Item varchar(20)) INSERT INTO @Example (ID, Item) SELECT 1, 'TextLineA' UNION ALL SELECT 1, 'TextLineB' UNION ALL SELECT 2, 'TextLineA' UNION ALL SELECT 3, 'TextLineA' UNION ALL SELECT 3, 'TextLineB' UNION ALL SELECT 3, 'TextLineC' select ID, MAX(CASE WHEN Item='TextLineA' THEN 1 ELSE 0 END) as TextLineA, MAX(CASE WHEN Item='TextLineB' THEN 1 ELSE 0 END) as TextLineB, MAX(CASE WHEN Item='TextLineC' THEN 1 ELSE 0 END) as TextLineC FROM @Example GROUP BY ID
结果是:
ID TextLineA TextLineB TextLineC 1 1 1 0 2 1 0 0 3 1 1 1
其中1为true,0为false。