查明是否存在按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这样的傻事。非常感谢。