SQL Pivot报表-未按需要分组

SQL Pivot报表-未按需要分组,sql,pivot-table,Sql,Pivot Table,我有一个返回“pivot”结果集的查询。我的问题是,我需要匹配每个时间戳的参数来自稍微不同的时间戳——如下图所示 我需要将5个参数——gty、tmp、rate、mf、prs——组合到任意“maxtime”下的一行中,它们忽略空值 有什么想法吗 SELECT [time], Tagname, GTY, TMP, FLOW as Rate, MF, PRS FROM y PIVOT ( max(lastvalue) FOR [tag2] IN (GTY, TMP, FLO

我有一个返回“pivot”结果集的查询。我的问题是,我需要匹配每个时间戳的参数来自稍微不同的时间戳——如下图所示

我需要将5个参数——gty、tmp、rate、mf、prs——组合到任意“maxtime”下的一行中,它们忽略空值

有什么想法吗

SELECT [time], Tagname, GTY, TMP, FLOW as Rate, MF, PRS
FROM y
PIVOT
(
       max(lastvalue)
       FOR [tag2] IN (GTY, TMP, FLOW, MF, PRS)
) AS P

将其分组,以便保留时间部分。
如果您需要列出所有以逗号分隔的唯一值,而不是max,那么我有一个CLR聚合函数,您可以在使用SQL Server时使用它

SELECT max([time]) AS 'time',
       Tagname,
       max(GTY) AS 'GTY',
       max(TMP) AS 'TMP',
       max(FLOW) AS 'Rate',
       max(MF) AS 'MF',
       max(PRS) AS 'PRS'
FROM y
GROUP BY Tagname
或者将你的轴心点按

SELECT max([time]) AS 'time',
           Tagname,
           max(GTY) AS 'GTY',
           max(TMP) AS 'TMP',
           max(FLOW) AS 'Rate',
           max(MF) AS 'MF',
           max(PRS) AS 'PRS'
    FROM (SELECT [time], Tagname, GTY, TMP, FLOW as Rate, MF, PRS
          FROM y
          PIVOT
          (
          max(lastvalue)
          FOR [tag2] IN (GTY, TMP, FLOW, MF, PRS)
          ) AS P) y
    GROUP BY Tagname
或者更好的方法是使用CTE

WITH PIV AS 
(SELECT [time], Tagname, GTY, TMP, FLOW as Rate, MF, PRS
FROM y
PIVOT
(
       max(lastvalue)
       FOR [tag2] IN (GTY, TMP, FLOW, MF, PRS)
) AS P)
SELECT max([time]) AS 'time',
           Tagname,
           max(GTY) AS 'GTY',
           max(TMP) AS 'TMP',
           max(FLOW) AS 'Rate',
           max(MF) AS 'MF',
           max(PRS) AS 'PRS'
    FROM PIV
    GROUP BY Tagname
请将你的问题标题改为描述你遇到的问题或你提出的问题的标题。SQL和pivot表都是您使用的标记中可用的信息,这意味着标题中没有相关内容。它应该具有足够的描述性,对在搜索结果中找到它的未来读者具有重要意义。谢谢