带有联合和顺序的SELECT查询进入新的临时表不起作用

问题描述

我编写了一个T-SQL查询来从许多表中收集一些数据,并使用选择联合查询将行分为三部分。执行查询时出错。我已附上查询,请指导我纠正错误。

SELECT * 
INTO #tmpFerdeen 
FROM 
    (SELECT
         (CASE WHEN sc <> '0000' THEN sln END) AS t,(CASE WHEN sc <> '0000' THEN crid END) AS crrid,CASE Header 
            WHEN 'H' THEN 1  
            WHEN 'S' THEN 2 
            WHEN 'T' THEN 3 
            ELSE 0 
         END O,CASE 
            WHEN sc <> '0000' THEN Header 
         END,CASE 
            WHEN sc <> '0000' THEN Header+'|'+st + '|'+convert(varchar,pid) + '|' + convert(varchar,cid) + '|' +convert(varchar,cenddate ) 
         END AS RestOfData
     FROM
         #tempsddd

     UNION ALL

     SELECT 
         sln t,crid crrid,CASE Details 
            WHEN 'H' THEN 1  
            WHEN 'S' THEN 2 
            WHEN 'T' THEN 3 
            ELSE 0 
         END,Details,Details + '|' + ISNULL(CONVERT(varchar,sln),'') + '|' + '|' + '|' + '|'
                 + ISNULL(CONVERT(varchar,ah),'') + '|'
                 + ISNULL(sfne,'') + '|' 
                 + ISNULL(smne,'') + '|' 
                 + ISNULL(slne,'')
   FROM
       #tempsddd

    UNION ALL

    SELECT
        (CASE WHEN sc <> '0000' THEN sln END) AS t,CASE Footer 
           WHEN 'H' THEN 1  
           WHEN 'S' THEN 2 
           WHEN 'T' THEN 3 
           ELSE 0 
        END,CASE WHEN sc <> '0000' THEN Footer END,CASE WHEN sc <> '0000' THEN Footer + '|' + sc END
    FROM
        #tempsddd
    ORDER BY
        crrid,CASE Header 
            WHEN 'H' THEN 1  
            WHEN 'S' THEN 2 
            WHEN 'T' THEN 3 
            ELSE 0 
         END) 

请指导我这样做。

解决方法

由于“ Order by”语句,我认为这是不正确的语法,您应该在括号中放置order by,并且还要在order by之后使用case,因此请检查情况是否正确

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...