2015-09-25 63 views
3

我有輸出名,字段,價值,像這樣一個觀點:如何在SQL Server查詢使用值的列標題

Name | Field | Value 
------|-------|------ 
Item1 | SKU | 83841 
Item1 | UOM | EA 
Item1 | QTY | 47 
Item2 | SKU | 83458 
Item2 | UOM | PK 
Item2 | QTY | 88 

而且我想:

Name | SKU | UOM | QTY 
------|-------|-----|---- 
Item1 | 83841 | EA | 47 
Item2 | 83458 | PK | 88 

我試過Pivot,但是如果我彙總Name,那麼我只能得到一個值。這裏是我的查詢:

SELECT SKU, UOM, QTY 
FROM 
(
    SELECT Field, Value 
    FROM dbo.ProductExport 
) d 
PIVOT 
(
    MAX(FieldValue) 
    for Value in (SKU, UOM, QTY) 
) piv; 

我覺得它只是可能沒有獨特的價值是可能的,但我可能只是失去了一些東西了。

回答

3

您必須使用FOR Field由於透視列來自Field

SELECT Name, SKU, UOM, QTY 
FROM 
(
    SELECT Name, Field, Value 
    FROM dbo.ProductExport 
) d 
PIVOT 
(
    MAX(Value) 
    for Field in (SKU, UOM, QTY) 
) piv; 

value這是你的表,你想要的數據還添加Name子查詢和替換fieldvalue

SQL Fiddle(感謝Giannis PARASKEVOPOULOS):

+1

準備的SQLFiddle與你的答案... HTTP://sqlfiddle.com/# 6/e7aab/9,不要忘了改'@ data'什麼OP有一張表格。 –

+0

編輯已完成...謝謝。我會將你的小提琴加入我的答案中(我希望它可以與你合作)。 –

+0

謝謝!這就是它。 –