旋转时在列中保留最大日期

Keep max date in column when pivoting

我有要转换的数据。只要我不包括某些行上不同的日期,一切都会顺利进行。我想保留每组 idAnalyseItem 的最高日期。 目前,我的查询看起来像这样,但我对它的日期部分如何适应感到困惑。

WITH Analyser AS (
    SELECT ElementItems.idAnalyseItem as Analyse, ESymbol as Symbol, EIValue as Verdi
    FROM ElementItems
)
SELECT * FROM Analyser

PIVOT(
    MAX(Verdi) FOR Symbol IN ([Justert],[Produkt Type],[Start Time],[Stopp Time],[Dunger],[Våtvekt],[Vann],[Fe-tot],[Fe-Mag],[Svovel],[P],[SiO2],[MnO],[Al2O3],[CaO],[1,19],[0,841],[0,425],[0,212],[0,125],[0,106],[0,075],[0,063],[0,045],[0,02])
) AS PivotTable 

ORDER BY Analyse DESC

这是我的数据集。微软 SQL 服务器 2008。

您可以像下面这样更改您的查询,以获得属于 idAnalyseItem

的所有行的 MAX(EIDateTime)
;WITH Analyser AS (
    SELECT ElementItems.idAnalyseItem as Analyse, ESymbol as Symbol, EIValue as Verdi, MAX(EIDateTime) OVER(PARTITION BY ElementItems.idAnalyseItem) EIDateTime 
    FROM ElementItems
)
SELECT * FROM Analyser
PIVOT(
    MAX(Verdi) FOR Symbol IN ([Justert],[Produkt Type],[Start Time],[Stopp Time],[Dunger],[Våtvekt],[Vann],[Fe-tot],[Fe-Mag],[Svovel],[P],[SiO2],[MnO],[Al2O3],[CaO],[1,19],[0,841],[0,425],[0,212],[0,125],[0,106],[0,075],[0,063],[0,045],[0,02])
) AS PivotTable 

ORDER BY Analyse DESC

同样的事情可以使用 GROUP BY 来完成,如下所示。

;WITH Analyser AS (
    SELECT ElementItems.idAnalyseItem as Analyse, ESymbol as Symbol, EIValue as Verdi, MAX(EIDateTime) as EIDateTime 
    FROM ElementItems
    GROUP BY idAnalyseItem,ESymbol,EIValue
)
SELECT * FROM Analyser
PIVOT(
    MAX(Verdi) FOR Symbol IN ([Justert],[Produkt Type],[Start Time],[Stopp Time],[Dunger],[Våtvekt],[Vann],[Fe-tot],[Fe-Mag],[Svovel],[P],[SiO2],[MnO],[Al2O3],[CaO],[1,19],[0,841],[0,425],[0,212],[0,125],[0,106],[0,075],[0,063],[0,045],[0,02])
) AS PivotTable 

ORDER BY Analyse DESC