【问题标题】:Properly converting rows into columns using PIVOT in SQL在 SQL 中使用 PIVOT 将行正确转换为列
【发布时间】:2015-10-15 19:01:14
【问题描述】:

我已设法将现有行转置为列,但是转置不是生成 1 行,而是使用相同的容器生成 2 行。这是我的数据集。

SELECT distinct c.container, c.attribute, c.value, c.property from cars c
WHERE c.container = 'VOLVO'

---------------------------------------------------
| CONTAINER |  ATTRIBUTE |   VALUE   | PROPERTY |
|  VOLVO    |    TIRE    |   DUNLOP  |     A    |
|  VOLVO    |    SEATS   |     4     |     A    |
|  VOLVO    |    PRICE   |   25,000  |     B    |
|  VOLVO    |    COLOR   |    BLUE   |     A    |
|  VOLVO    |    MODEL   |    XC90   |     A    |


SELECT * FROM cars
PIVOT( max(value) for attribute IN ([TIRE],[SEATS],[PRICE],[COLOR],[MODEL])) P
WHERE container = 'VOLVO'

---------------------------------------------------------------------------
| CONTAINER |  PROPERTY |    TIRE    | SEATS |   PRICE  |  COLOR  |  MODEL
---------------------------------------------------------------------------
| VOLVO     |     A     |   DUNLOP   |   4   |   NULL   |  BLUE   |  XC90
| VOLVO     |     B     |   NULL     |  NULL |  25,000  |  NULL   |  NULL

如何合并这两行并产生这个结果?

---------------------------------------------------------------------------
| CONTAINER |  PROPERTY |    TIRE    | SEATS |   PRICE  |  COLOR  |  MODEL
---------------------------------------------------------------------------
| VOLVO     |     A     |   DUNLOP   |   4   |  25,000  |  BLUE   |  XC90

谢谢!

【问题讨论】:

  • 将属性排除在查询之外/不要使用 select *
  • 我明确选择了列,但仍然产生相同的结果

标签: sql-server sql-server-2008 join pivot


【解决方案1】:

您需要省略属性:

SELECT * FROM (
  select CONTAINER, VALUE, ATTRIBUTE from cars
) S
PIVOT( max(value) for attribute IN ([TIRE],[SEATS],[PRICE],[COLOR],[MODEL])) P
WHERE container = 'VOLVO'

结果:

CONTAINER   TIRE    SEATS   PRICE   COLOR   MODEL
VOLVO       DUNLOP  4       25,000  BLUE    XC90

SQL Fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    相关资源
    最近更新 更多