【发布时间】:2020-10-09 10:06:28
【问题描述】:
我有一张参考价格表,价格类别(前专业/客户...),重量和价格 每篇文章都有 X 行相同的参考,价格类别取决于重量 我想要一个带有参考、价格类别、Price1、Price2 的退货... 我尝试调整我找到的代码,但我在链接权重和命名列 PRIX1、PRIX2 时遇到问题...
declare @MAxcols as int
DECLARE @cols AS NVARCHAR(MAX)='';
/*max of differents price=max columns dynamic to add*/
set @Maxcols = (select max(NBLignes) from (select count(*) as NBLignes
FROM [Z_TARIFS_VENTE] as Results
GROUP BY AR_REF,Cat_Prx) as tmp)
/*Build all dynamic columns */
DECLARE @cnt INT = 0;
WHILE @cnt < @Maxcols
BEGIN
SET @cols = @cols + 'PRIX' + cast(@cnt+1 as nvarchar(3)) + ','
SET @cnt = @cnt + 1;
END
SET @cols=LEFT(@cols, LEN(@cols) - 1)/*remove last , = 'PRIX1,PRIX2,PRIX3...PRIXX'*/
DECLARE @query AS NVARCHAR(MAX);
SELECT @query =
'SELECT
[AR_Ref],
[Cat_Prx],
' + @cols + '
FROM (
Select
[AR_Ref],
[Cat_Prx],
[weight] ,
[PRIX]
From
[Z_TARIFS_VENTE]
) t
PIVOT
(
Sum(PRIX)
FOR weight IN( ' + @cols + ' )' +/* Here my problem*/
' ) AS p; ';
Execute(@query);
我不想将每个权重放在单独的列中,而只在 Prix1、prix2 上进行分类...
【问题讨论】:
标签: sql sql-server pivot