2013-08-22 10 views
0
UNIT  ID  TAG  value 

unit1  A   tag1  0 
unit1  A   tag2  53 
unit2  A   tag1  2 
unit3  B   tag1  35 
unit3  B   tag2  3 
unit4  A   tag1  62 
unit1  B   tagn  0 

預計輸出我想列數據的SQL轉換基於其它列

UNIT  ID  tag1  tag2 .... tagn 
unit1  A  null  53  x 
unit1  B   2   -  x 
unit3  B   2   3  x 
unit4  A   62  -  x 
unit5  B   -   -  0 
+0

您使用哪種dbms?如果我理解的很好,你想在標籤上應用一個數據透視表。 –

回答

0

試試這個行和驗證,如果你使用的是SQL SERVER

DECLARE @cols NVARCHAR(MAX) 
DECLARE @query NVARCHAR(MAX) 

SET @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME([TAG]) 
      FROM Table1 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 


SET @query = 'SELECT [UNIT], [ID],'[email protected]+' FROM Table1 
      PIVOT 
      (
       MAX([value]) FOR [TAG] IN ('[email protected]+') 
      ) P 
      ORDER BY [UNIT],[ID]' 


EXEC(@query) 

SQL FIDDLE DEMO

OUTPUT

UNIT ID tag1 tag2 tagn 
unit1 A 0   53 NULL 
unit1 B NULL NULL 0 
unit2 A 2  NULL NULL 
unit3 B 35   3 NULL 
unit4 A 62  NULL NULL