2016-04-07 5 views
1

以下のサンプルがあります。私はPIVOTを使用する場合T-SQL - 列として行を取得する(ピボットが機能しない)

row_count | FileName     | TableName |TableID 
5326  |[OrderFeed_20160406.tsv] |OrderFeed |1 
788  |[CategoryFeed_20160406.tsv]|Category |2 

、それは動作しますが、データの順序が変更されている。

VariableName variableValue 
row_count  5326  
FileName  [OrderFeed_20160406.tsv] 
TableName  OrderFeed 
TableID   1 
row_count  788 
FileName  [CategoryFeed_20160406.tsv] 
TableName  Category 
TableID   2 
row_count  224 
FileName  [ItemFeed_20160406.tsv] 
TableName  Item 
TableID   3 
row_count  991 
FileName  [ContactFeed_20160406.tsv] 
TableName  Contact 
TableID   4 

は、私がデータ以下のようなことを示してほしいです。つまり、[OrderFeed_20160406.tsv]に5326行があり、それのTableIdが実際には1ですが、ピボット[OrderFeed_20160406.tsv]の後に788行があり、異なるTableIDを取得した場合、

マイサンプルピボットコードは以下の通りです:

select row_count, 
[FileName], 
TableID, 
TableName from (
select VariableName , VariableValue,row_number() over(partition by VariableName 
         order by VariableValue) seq 
from DailyLogs 
) d 
PIVOT (count(VariableValue) for variableName in ( row_count, 
FileName, 
TableID, 
TableName)) 
piv; 
+0

を試してみてください。どの列が互いに接続されているかはどのように分かりますか? – Tobb

+0

@Tobbに同意すると、あなたの目標とする答えはあなたのテーブルデザインでなければなりません。 –

+0

不幸にも、各行の間には接続がありません。それはログテーブルです、はい、それは非常に奇妙です – arslan

答えて

0

これは奇妙なデータベース設計であるこの

DECLARE @TABLE TABLE (row_no INT IDENTITY(1,1), variableName NVARCHAR(200) 
       ,variableValue NVARCHAR(200)) 
INSERT INTO @TABLE 
SELECT * FROM DailyLogs 

SELECT [row_count],[FileName],[TableName],[TableID] 
FROM (
    SELECT variableName,variableValue, 
     ROW_NUMBER() OVER(PARTITION BY variableName ORDER BY row_no) AS ROWNO FROM @TABLE 
    ) T PIVOT(MAX(VariableValue) FOR 
      variableName IN ([FileName],[row_count],[TableID],[TableName])) PIV 
ORDER BY [TableID] 

Result is : 

row_count FileName     TableName TableID 
5326  [OrderFeed_20160406.tsv] OrderFeed 1 
788   [CategoryFeed_20160406.tsv] Category 2 
224   [ItemFeed_20160406.tsv]  Item  3 
991   [ContactFeed_20160406.tsv] Contact  4 
+0

ありがとうございますが、それは正しい結果を与えていませんでした:( – arslan

+0

クエリが変更され、結果も含まれて、plzチェック –

+0

それは働いた。 – arslan

関連する問題