我正在尝试获取列为列的订单的产品列表。我尝试了一个数据透视表,但我不希望列名称是产品的名称,但静态名称,如产品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列的表变量,然后插入但仍然无法看到它是最好的选择。
提前感谢.....
答案 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 |
+----------+----------+----------+----------+----------+----------+----------+