2015-09-25 58 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

谢谢!这就是它。 –