2016-04-07 36 views
1

Aşağıdaki örnekte verilerim var. Ben PIVOT kullandığınızdaT-SQL - Satırları sütun olarak al (Pivot çalışmıyor)

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

, O iş ama verilerin sırası değişiyor geçerli:

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 

Veri aşağıda gibi göstermek istiyoruz. Yani, [OrderFeed_20160406.tsv] 5326 satıra sahipse ve bunun TableId'si gerçekte 1 ancak pivottan sonra [OrderFeed_20160406.tsv] 788 satıra sahipse ve farklı TableID al'ler alıyorsa.

Benim Örnek pivot kod aşağıda:

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

deneyin. Hangi satırların birbiriyle bağlantılı olduğunu nasıl biliyorsunuz? – Tobb

+0

@Tobb ile katılıyorum, hedef cevabınız masa tasarımınız olmalıdır. –

+0

Talihsizce, her sıra arasında bağlantı yoktur. Bu günlük tablo ve evet çok garip – arslan

cevap

0

Bu garip bir veritabanı tasarımı olan bu

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

Teşekkür ederim ama doğru sonuç vermedi :( – arslan

+0

Sorgu değiştirilmiş, sonuç da dahil, plz kontrol –

+0

Bu işe yaradı. – arslan