SELECT  
(SELECT TOP 1 SR_ID FROM CM_BillStepRecord C WHERE C.PB_ID = A.PB_ID 
AND C.BSH_Card = A.BSH_Card ORDER BY BSR_ID DESC ) AS STEP1,
(SELECT TOP 1 SR_ID FROM CM_BillStepRecord C WHERE C.PB_ID = B.PB_ID 
AND C.BSH_Card = B.BSH_Card ORDER BY BSR_ID DESC ) AS STEP2,
(SELECT TOP 1 SR_ID FROM CM_BillStepRecord C WHERE C.PB_ID = A.PB_ID 
AND C.BSH_Card = A.BSH_UnionCard ORDER BY BSR_ID) AS STEP3
FROM CM_BillStepHead A,CM_BillStepHead B
WHERE A.BSH_Card < B.BSH_Card
AND A.PB_ID = B.PB_ID
AND A.BSH_UnionCard = B.BSH_UnionCard
AND A.PB_ID = '生产单号1'UNION SELECT A.SR_ID  AS STEP1,0  AS STEP2,B.SR_ID AS STEP3
FROM CM_BillStepRecord A,CM_BillStepRecord B
WHERE 
A.PB_ID = B.PB_ID
AND A.BSH_Card = B.BSH_Card
AND A.BSR_ID = B.BSR_ID - 1 
AND A.PB_ID = '生产单号1'错误提示::服务器: 消息 104,级别 15,状态 1,行 1
如果语句中包含 UNION 运算符,那么 ORDER BY 子句中的项就必须出现在选择列表中。

解决方案 »

  1.   

    ORDER BY
    是用来查找CM_BillStepRecord 表中,BSR_ID最大记录中,SR_ID的值。
      

  2.   

    把上面的结果放到临时表中,再和下面的数据union all
      

  3.   


    没用的,我的语句本来就还有一层的,没贴出来,
    只要里面有ORDER BY ,嵌几层都会跟UNION冲突的。
      

  4.   

    那你裏面不要加order by 啊