旋转时在列中保留最大日期
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
我有要转换的数据。只要我不包括某些行上不同的日期,一切都会顺利进行。我想保留每组 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