在多个SQL SERVER列中透视
我的数据表如下:在多个SQL SERVER列中透视,sql,sql-server,Sql,Sql Server,我的数据表如下: CLIENT ART MONTH1 MONTH2 MONTH3 11 1 100 150 300 11 2 200 250 350 但我需要这个 CLIENT ART MONTH1 MONTH2 MONTH3 ART2 MONTH1_2 MONTH2_2 MONTH3_2 11 1 100 150 300 2 200
CLIENT ART MONTH1 MONTH2 MONTH3
11 1 100 150 300
11 2 200 250 350
但我需要这个
CLIENT ART MONTH1 MONTH2 MONTH3 ART2 MONTH1_2 MONTH2_2 MONTH3_2
11 1 100 150 300 2 200 250 350
我试过这个SQL代码
SELECT cliente, [1] art1, SUM([10]) month1 , SUM([11]) month2, SUM([12]) month3, [10] art2 , SUM([10]) month1_2 , SUM([11]) month2_2, SUM([12]) month3_2
FROM (
SELECT v.cliente, MONTH(v.fechaemision) Mes, vd.articulo, vd.cantidad
FROM venta v
JOIN ventad vd on v.id=vd.id and v.mov='Estadistica'
) AS SourceTable
PIVOT(
max(articulo)
FOR articulo IN ( [100],[1])-- and Artiulo in ([100])
) AS PivotTable
PIVOT(
AVG(cantidad)
FOR Mes IN ( [10],[11],[12])-- and Artiulo in ([100])
) AS PivotTable
GROUP BY cliente, [10], [1]
结果如下:
CLIENT ART MONTH1 MONTH2 MONTH3 ART2 MONTH1_2 MONTH2_2 MONTH3_2
11 1 100 150 300 2 100 150 300
我可以旋转艺术品,但不能旋转第二件艺术品每个月的数量
有谁能指导我克服我所犯的错误吗?考虑使用,过滤的艺术价值比原始表格少一个。为客户端的每个艺术项目添加一个新的自连接表
SELECT v1.CLIENT, v1.ART, v1.MONTH1, v1.MONTH2, v1.MONTH3,
v2.ART As ART_2, v2.MONTH1 As MONTH1_2, v2.MONTH2 As MONTH2_2,
v2.MONTH3 As MONTH3_2
FROM ventad AS v1
INNER JOIN ventad As v2
ON v1.CLIENT = v2.CLIENT
WHERE v1.ART = v2.ART - 1
ORDER BY v1.CLIENT, v1.ART;