Sql pivot表为同一ID返回多行

Sql pivot表为同一ID返回多行,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个sql代码,我用它来做pivot。代码如下: SELECT DISTINCT PersonID ,MAX(pivotColumn1) ,MAX(pivotColumn2) --originally these were in 2 separate rows) FROM(SELECT srcID, PersonID, detailCode, detailValue) FROM src) AS SrcTbl PIVOT(MAX(detailValue) FOR detailCode IN (

我有一个sql代码,我用它来做pivot。代码如下:

SELECT DISTINCT PersonID
,MAX(pivotColumn1)
,MAX(pivotColumn2) --originally these were in 2 separate rows)
FROM(SELECT srcID, PersonID, detailCode, detailValue) FROM src) AS SrcTbl
PIVOT(MAX(detailValue) FOR detailCode IN ([pivotColumn1],[pivotColumn2])) pvt
GROUP BY PersonID
在源数据中,ID有两个单独的行,因为它有自己的ID来分隔值。我现在已经对它进行了数据透视,尽管我对它进行了分组并在数据透视列上使用了聚合,但它仍然为ID提供了两个单独的行。你知道密码有什么问题吗

因此,我在子句中的
中列出了所有可能的详细代码。因此,当值为none时,我返回null,但我希望将其全部汇总在一行中。见下图


如果这些都是
detailCode
的选项,您可以将条件聚合与
大小写表达式一起使用,而不是使用
Pivot

SELECT t.personID,
       MAX(CASE WHEN t.detailCode = 'cas' then t.detailValue END) as cas,
       MAX(CASE WHEN t.detailCode = 'buy' then t.detailValue END) as buy,
       MAX(CASE WHEN t.detailCode = 'sel' then t.detailValue END) as sel,
       MAX(CASE WHEN t.detailCode = 'pla' then t.detailValue END) as pla
FROM YourTable t
GROUP BY t.personID

样本数据和预期结果请使用
pivot
或使用
groupby
,但不能同时使用。如果使用
pivot
,则应删除子查询中使两行看起来不同的列。但是,在某些情况下,两行以上的行会出现,因此我提出了这个问题。对不起,我应该在发布问题时澄清这一点是的,你应该发布数据样本@faiz问题是我希望能够使用pivot,因为我将增加detailCode。“从今往后,使用pivot有解决这个问题的方法吗?”各位,我刚整理好。这是每一行的创建日期有点不同,它不允许我看到我想要的结果。你可以将它用于任意多个选项,只要它们是有限的,并且你知道它们@faiz