如何将订单商品转换为产品列列表

时间:2015-07-22 12:04:37

标签: sql select pivot-table

我正在尝试获取列为列的订单的产品列表。我尝试了一个数据透视表,但我不希望列名称是产品的名称,但静态名称,如产品1,产品2,然后行将具有产品sku和数量。所有相同的产品应该在同一列中。像product1列等中的所有sku1一样

例子。订单和订购项目表。 然后输出像

标题

orderid,product1,quantity1,product2 quantity2,product3,quantity3

行:

1,sku1,3,sku2,4,sku3,5

2,sku1,2,sku2,5,sku3,1

我创建了一个sql小提琴:http://sqlfiddle.com/#!3/d993a/4/0,带有结构示例并选择。

我的最后一个想法是一个包含所有revant列的表变量,然后插入但仍然无法看到它是最好的选择。

提前感谢.....

1 个答案:

答案 0 :(得分:0)

select  b.quantity, 
CASE WHEN b.productname='product 1' THEN b.sku END 'product1',
CASE WHEN b.productname='product 2' THEN b.sku END 'product2',
CASE WHEN b.productname='product 3' THEN b.sku END 'product3',
CASE WHEN b.productname='product 4' THEN b.sku END 'product4',
CASE WHEN b.productname='product 5' THEN b.sku END 'product5',
CASE WHEN b.productname='product 6' THEN b.sku END 'product6' 
from order1 a join orderitems b on (a.orderid=b.orderid) where a.orderid=
b.orderid ;

输出:

+----------+----------+----------+----------+----------+----------+----------+
| quantity | product1 | product2 | product3 | product4 | product5 | product6 |
+----------+----------+----------+----------+----------+----------+----------+
|        2 | sku1     | NULL     | NULL     | NULL     | NULL     | NULL     |
|        4 | NULL     | sku2     | NULL     | NULL     | NULL     | NULL     |
|        5 | NULL     | NULL     | sku3     | NULL     | NULL     | NULL     |
|        2 | NULL     | NULL     | NULL     | sku4     | NULL     | NULL     |
|        1 | NULL     | NULL     | NULL     | NULL     | sku5     | NULL     |
|        2 | sku1     | NULL     | NULL     | NULL     | NULL     | NULL     |
|        4 | NULL     | sku2     | NULL     | NULL     | NULL     | NULL     |
|        5 | NULL     | NULL     | sku3     | NULL     | NULL     | NULL     |
|        2 | NULL     | NULL     | NULL     | sku4     | NULL     | NULL     |
|        1 | NULL     | NULL     | NULL     | NULL     | sku5     | NULL     |
|        1 | NULL     | NULL     | NULL     | NULL     | NULL     | sku6     |
+----------+----------+----------+----------+----------+----------+----------+