SQL使用行作为列

Bar*_*uch 0 mysql sql pivot

如何转换以下内容:

+------+---------+------+
| Date | Product | Sold |
+------+---------+------+
| 1/1  | P1      |  100 |
| 1/1  | P2      |  250 |
| 1/1  | P3      |   50 |
| 2/1  | P1      |  170 |
| 2/1  | P2      |    0 |
| 2/1  | P3      |   70 |
+------+---------+------+
Run Code Online (Sandbox Code Playgroud)

进入这样的表:

+------+-----+-----+----+
| Date | P1  | P2  | P3 |
+------+-----+-----+----+
| 1/1  | 100 | 250 | 50 |
| 2/1  | 170 |   0 | 70 |
+------+-----+-----+----+
Run Code Online (Sandbox Code Playgroud)

用SQL?
我知道产品的数量(正好是3).

rua*_*akh 5

许多DBMS提供对"pivotots"或"交叉表报告"的特定支持,但如果您的DBMS没有,或者您更喜欢可以在各种DBMS上运行的解决方案,您可以编写:

SELECT Date,
       MIN(CASE WHEN Product = 'P1' THEN Sold END) AS "P1",
       MIN(CASE WHEN Product = 'P2' THEN Sold END) AS "P2",
       MIN(CASE WHEN Product = 'P3' THEN Sold END) AS "P3"
  FROM ___insert_table_name_here___
 GROUP
    BY Date
;
Run Code Online (Sandbox Code Playgroud)

编辑补充:现在,您已经提到,你使用MySQL,这并不会有特别的枢纽或交叉表支持,所以上面的查询是要走的路.