declare @oinv_id  int
declare @I        int
select top 1 @oinv_id =max(分组序号) from oinv_id      --获取最大的分组编号
print @oinv_id
set @I=1       
while @I<@oinv_id                              --当@I大于@oinv_id时候跳出循环
SELECT 
     kp_id,kp_hth,
     
      MAX(CASE 分组序号 WHEN @I THEN kp_rq ELSE 0 END) AS 'c1',
         @I=@I+1
   
FROM oinv_ID
GROUP BY kp_id,kp_hth怎么一直显示:向变量赋值的 SELECT 语句不能与数据检索操作结合使用。
请高手指教 怎么修改 谢谢!

解决方案 »

  1.   

    网上有很多行转列的列子,你可以去参考。
    你这里是变量赋值的问题,
    SELECT    kp_id,kp_hth,  MAX(CASE 分组序号 WHEN @I THEN kp_rq ELSE 0 END) AS 'c1',
      @I=@I+1
        
    你这里既是查询列,又是给变量赋值,这样写不行的。
    可以这样:
    while @I<@oinv_id --当@I大于@oinv_id时候跳出循环begin SELECT  kp_id,kp_hth,MAX(CASE 分组序号 WHEN @I THEN kp_rq ELSE 0 END) AS 'c1',
    FROM oinv_ID 
    GROUP BY kp_id,kp_hth

    set @I=@I+1end