给定这个 SQL 输入表
GroupId Item
1 Fish
1 FishBowl
2 Fish
3 Fish
我怎样才能得出这个输出?
Item IsInGroup1 IsInGroup2 IsInGroup3
Fish Y Y Y
FishBowl Y N N
请注意,组数可以是可变的
给定这个 SQL 输入表
GroupId Item
1 Fish
1 FishBowl
2 Fish
3 Fish
我怎样才能得出这个输出?
Item IsInGroup1 IsInGroup2 IsInGroup3
Fish Y Y Y
FishBowl Y N N
请注意,组数可以是可变的
通常,您不能使用标准 SQL 执行可变数量的组。您必须事先了解这些组。这是因为任何 SQL 查询都必须知道列数及其名称。
SELECT Item,
MAX(CASE GroupId WHEN 1 THEN 'Y' ELSE 'N' END) AS IsInGroup1,
MAX(CASE GroupId WHEN 2 THEN 'Y' ELSE 'N' END) AS IsInGroup2,
MAX(CASE GroupId WHEN 3 THEN 'Y' ELSE 'N' END) AS IsInGroup3
FROM ThisInputTable
GROUP BY Item;
Microsoft SQL Server 确实为 PIVOT 表提供了一些工具,但这不是标准 SQL。我不是 Microsoft 用户,所以我会给你一个“使用 PIVOT 和 UNPIVOT ”的链接,剩下的交给你。
好吧,我想这取决于您使用的数据库。这对我有用:
选择项目,IF(GroupId=1,'Y','N') As IsInGroup1
, IF(GroupId=2,'Y','N') As IsInGroup2
, IF(GroupId=3,'Y','N') AsIsInGroup3
从
New Table
按项目分组;