SQL – 在单个客户ID下分组

我有下面的表格,它会检查客户有多less订单将用作我的PowerPivot模型的查找表/filter

| CustomerID | OrderCntOne | OrderCntTwo | OrderCntThree | --------------------------------------------------------------- | 0 | X | | | | 0 | | X | | | 0 | | | X | | 1 | X | | | | 2 | X | | | | 3 | X | | | | 3 | | X | | | 4 | X | | | | 4 | | X | | | 4 | | | X | --------------------------------------------------------------- 

它是用这个SQL查询创build的,查看给定订单的数量(订单数量),并根据客户的生命中有1,2或3个订单,忽略超过3命令。

 SELECT [CustomerID], CASE WHEN OrderCount = 1 THEN 'X' END AS OrdCntOne, Case WHEN OrderCount = 2 THEN 'X' End as OrdCntTwo, Case WHEN OrderCount = 3 THEN 'X' End as OrdCntThree, FROM [dbo].[Table] group by CustomerID, ordercount 

但是,我希望表格看起来像这样,因此每个客户ID只有一行

 | CustomerID | OrderCntOne | OrderCntTwo | OrderCntThree | --------------------------------------------------------------- | 0 | X | X | X | | 1 | X | | | | 2 | X | | | | 3 | X | X | | | 4 | X | X | X | --------------------------------------------------------------- 

但不知道如何在每行显示1个客户ID,并在该单个ID旁边显示正确的“x's”。 由于导致多个客户ID的订单数量,无法按客户ID完成一个组。

任何想法都会有所帮助。

只需从group by删除ordercount group by然后在caseexpression式中使用MAX

 select [CustomerID], max(case when OrderCount = 1 then 'X' end) as OrdCntOne, max(case when OrderCount = 2 then 'X' end) as OrdCntTwo, max(case when OrderCount = 3 then 'X' end) as OrdCntThree from [dbo].[Table] group by CustomerID;