2017-11-02 16 views
0

SQLレポートを分析レポートの出力に変換しようとしています。次のように Selectステートメントと出力は次のようになります。レポートのために必要なピボットSQL選択結果出力希望する出力

SELECT QID, [Text], [Value] FROM TableA 

OUTPUT SINGLE質問(QID)

enter image description here

OUTPUT MULTIPLE質問(QID) enter image description here

所望の出力結果は、次のようになります。 enter image description here

WhileとCursorループを使用するのではなく、Pivo​​tテーブルまたは同様の方法を使用してこの結果を達成できますか?

おかげに関して、 Viju

+0

常に下の2行の回答IDですか?答えIDにオプションテキストを結ぶIDはありませんか? – kbball

+0

注:誰かがあなたに与える答えは、あなたがそれぞれのoptionTextを区別する実際の方法を持っていないように見えるので、助けになるとは限りません。このため、たとえ誰かが(例えば 'ROW_NUMBER()'ウィンドウ関数を使って)うまく答えても、将来的にはうまくいくという保証はありません。あなたは本当にあなたのデータを修正する必要があります。 – ZLK

+0

@ZLKフィードバックをいただきありがとうございます。 QIDはその質問を指します。各質問(QID 1と言う)には、コードスニペットに示すように複数の行が含まれている場合があります。図示のように、同じ質問(ID = 1)に対応する9つの行は、 –

答えて

2

我々はピボットで

チェック以下のクエリのための任意の集約関数を使用する必要があるとして、上記のクエリは、ピボットのID QID値は、すべてのレコードで同じです使用して動作しません。参照

DECLARE @TAB TABLE (QID INT,[TEXT] VARCHAR(255),VALUE VARCHAR(255)) 
INSERT INTO @TAB VALUES (1,'WEAG','SDARG'),(1,'NUM','1'),(1,'ID','1') 
,(2,'WEAG','RSTHGEST'),(2,'NUM','2'),(2,'ID','2') 
,(3,'WEAG','SREVFGWR'),(3,'NUM','3'),(3,'ID','3') 
SELECT * FROM @TAB 

SELECT * FROM 
(
SELECT T.QID,t.[TEXT],T.VALUE 
FROM @TAB T 
)A 
PIVOT (MAX(VALUE) FOR [TEXT] IN (WEAG,ID)) AS P 

OUTPUT

QID WEAG  ID 
1 SDARG  1 
2 RSTHGEST 2 
3 SREVFGWR 3 
関連する問題