2016-05-24 7 views
2

私は 'ピボット'結果SETを返すクエリを持っています。私が持っている問題は、各タイムスタンプに一致させるために必要なパラメータは、下の画像に示すように、わずかに異なるタイムスタンプからのものです。SQLピボットレポート - 希望通りにグループ化していません

私は、彼らがヌル

任意のアイデアを無視し、任意の "MAXTIME" の下に1行に--- PRS、MF、5つのパラメータのそれぞれを結合する必要がある--- gty、TMP、レート??

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 

SQL Piv

+0

してください[編集]あなたがしている問題について説明し、何かにあなたの質問のタイトルあなたは質問しているか質問しています。 * SQL *と*ピボット・テーブル*はどちらも、使用したタグから入手可能な情報です。つまり、タイトルに関連するコンテンツはありません。それは、検索結果でそれを見つける将来の読者にとって重要な意味を持つように説明的でなければなりません。ありがとう。勝利のための –

答えて

1

グループそれはあなたの時間の一部を手にするようにします。
SQL Serverを使用している場合に使用できるCLR集約関数は、maxの代わりにカンマ区切りのすべての値をリストする必要がある場合に使用します。

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 
+0

CTE! –

関連する問題