查明是否存在按SQL中的值分组的值
我有一张像这样的桌子:查明是否存在按SQL中的值分组的值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一张像这样的桌子: CustomerID ItemType 001 'a' 001 'b' 001 'c' 001 'd' 002 'd' CASE WHEN ItemType = 'a' THEN 1 ELSE 0 END as Aexists, CASE WHEN ItemType = 'b' THEN 1 ELSE 0 END as Bexists, CASE WHEN ItemType
CustomerID ItemType
001 'a'
001 'b'
001 'c'
001 'd'
002 'd'
CASE WHEN ItemType = 'a' THEN 1 ELSE 0 END as Aexists,
CASE WHEN ItemType = 'b' THEN 1 ELSE 0 END as Bexists,
CASE WHEN ItemType = 'c' THEN 1 ELSE 0 END as Cexists,
CASE WHEN ItemType = 'd' THEN 1 ELSE 0 END as Dexists,
CASE WHEN ItemType = 'e' THEN 1 ELSE 0 END as Eexists,
GROUP BY CustomerID
CustomerID, Aexists, Bexists, Cexists, Dexists, Eexists
001 1 1 1 1 0
002 0 0 0 1 0
如何构造类似以下内容的select语句:
CustomerID ItemType
001 'a'
001 'b'
001 'c'
001 'd'
002 'd'
CASE WHEN ItemType = 'a' THEN 1 ELSE 0 END as Aexists,
CASE WHEN ItemType = 'b' THEN 1 ELSE 0 END as Bexists,
CASE WHEN ItemType = 'c' THEN 1 ELSE 0 END as Cexists,
CASE WHEN ItemType = 'd' THEN 1 ELSE 0 END as Dexists,
CASE WHEN ItemType = 'e' THEN 1 ELSE 0 END as Eexists,
GROUP BY CustomerID
CustomerID, Aexists, Bexists, Cexists, Dexists, Eexists
001 1 1 1 1 0
002 0 0 0 1 0
结果如下所示:
CustomerID ItemType
001 'a'
001 'b'
001 'c'
001 'd'
002 'd'
CASE WHEN ItemType = 'a' THEN 1 ELSE 0 END as Aexists,
CASE WHEN ItemType = 'b' THEN 1 ELSE 0 END as Bexists,
CASE WHEN ItemType = 'c' THEN 1 ELSE 0 END as Cexists,
CASE WHEN ItemType = 'd' THEN 1 ELSE 0 END as Dexists,
CASE WHEN ItemType = 'e' THEN 1 ELSE 0 END as Eexists,
GROUP BY CustomerID
CustomerID, Aexists, Bexists, Cexists, Dexists, Eexists
001 1 1 1 1 0
002 0 0 0 1 0
我不知道如何判断这些项目是否存在,因为它们分散在一行中;我只希望每个客户返回一行 足够近。使用聚合函数
MAX
select
CustomerID,
max(CASE WHEN ItemType = 'a' THEN 1 ELSE 0 END) as Aexists,
max(CASE WHEN ItemType = 'b' THEN 1 ELSE 0 END) as Bexists,
max(CASE WHEN ItemType = 'c' THEN 1 ELSE 0 END) as Cexists,
max(CASE WHEN ItemType = 'd' THEN 1 ELSE 0 END) as Dexists,
max(CASE WHEN ItemType = 'e' THEN 1 ELSE 0 END) as Eexists
from t
GROUP BY CustomerID
聪明的我担心我会做一些像pivot这样的傻事。非常感谢。