Sql 按项目排序必须出现在选择列表中

Sql 按项目排序必须出现在选择列表中,sql,sql-server,Sql,Sql Server,我的查询出错,无法与其他查询合并。当我执行查询时,会显示以下错误消息 如果语句包含UNION、INTERSECT或EXCEPT运算符,则ORDER BY项必须出现在选择列表中 你的问题很大。最简单的修复方法是将“按元素排序”添加到“选择”: SELECT a.strMachID, a.strProdType, b.strDesc as Product,(SELECT COUNT(strProdType) FROM tblCurrTrx WHERE strMachid = a.strMac

我的查询出错,无法与其他查询合并。当我执行查询时,会显示以下错误消息

如果语句包含UNION、INTERSECT或EXCEPT运算符,则ORDER BY项必须出现在选择列表中


你的问题很大。最简单的修复方法是将“按元素排序”添加到“选择”:

    SELECT a.strMachID, a.strProdType, b.strDesc as Product,(SELECT COUNT(strProdType) FROM tblCurrTrx WHERE strMachid = a.strMachID  and 
        strProdType = b.strProdType  and strTransStatus='00' AND ysnCashJammed='0'  AND dtmCreated>='28/Jan/2020' AND 
        dtmCreated<'30/Jan/2020' AND strMachID = '01' and strPaymentMethod ='01') As Completed ,
        (SELECT COUNT (strProdType) FROM tblCurrTrx WHERE strMachid = a.strMachID and strProdType = b.strProdType and 
        strTransStatus IN ('01') AND ysnCashJammed='0'  AND dtmCreated>='28/Jan/2020' AND dtmCreated<'30/Jan/2020' AND strMachID = '01' and strPaymentMethod ='01') As Exception ,
        (SELECT COUNT (DISTINCT strTransStatus) FROM tblCurrTrx WHERE strMachid = a.strMachID and strProdType = b.strProdType and 
        strTransStatus IN ('00','01') AND ysnCashJammed='0'  AND dtmCreated>='28/Jan/2020' AND dtmCreated<'30/Jan/2020' AND strMachID = '01' and strPaymentMethod ='01') As ProdCnt ,
        (SUM(dblPaidAmt) )- SUM(((((a.intRM1Dispense * 1 + a.intRM5Dispense * 5) + a.intRM10Dispense * 10) + a.int10CentDispense * 0.1) +
        a.int20CentDispense * 0.2) + a.int50CentDispense * 0.5) as TotValue FROM tblCurrTrx a, tblProductType b WHERE(b.strProdType = a.strProdType) AND 
        strMachID = '01' AND ysnCashJammed='0' AND strTransStatus IN ('00','01')  AND a.dtmCreated>='28/Jan/2020' AND a.dtmCreated<'30/Jan/2020' AND 
        strMachID = '01'and strPaymentMethod ='01' GROUP BY a.strMachID, a.strProdType,b.strDesc, b.strProdType 

        UNION 

SELECT a.strMachID, a.strProdType,  b.strDesc as Product,(SELECT COUNT(strProdType) FROM tblCurrTrx WHERE strMachid = a.strMachID  and 
        strProdType = b.strProdType  and strTransStatus='00' AND ysnCashJammed='0'  AND dtmCreated>='28/Jan/2020' AND 
        dtmCreated<'30/Jan/2020' AND strMachID = '01' and strPaymentMethod ='02') As Completed ,
        (SELECT COUNT (strProdType) FROM tblCurrTrx WHERE strMachid = a.strMachID and strProdType = b.strProdType and 
        strTransStatus IN ('01') AND ysnCashJammed='0'  AND dtmCreated>='28/Jan/2020' AND dtmCreated<'30/Jan/2020' AND strMachID = '01' and strPaymentMethod ='02') As Exception ,
        (SELECT COUNT (DISTINCT strTransStatus) FROM tblCurrTrx WHERE strMachid = a.strMachID and strProdType = b.strProdType and 
        strTransStatus IN ('00','01') AND ysnCashJammed='0'  AND dtmCreated>='28/Jan/2020' AND dtmCreated<'30/Jan/2020' AND strMachID = '01' and strPaymentMethod ='02') As ProdCnt ,
        (SUM(dblPaidAmt) )- SUM(((((a.intRM1Dispense * 1 + a.intRM5Dispense * 5) + a.intRM10Dispense * 10) + a.int10CentDispense * 0.1) +
        a.int20CentDispense * 0.2) + a.int50CentDispense * 0.5) as TotValue FROM tblCurrTrx a, tblProductType b WHERE(b.strProdType = a.strProdType) AND 
        strMachID = '01' AND ysnCashJammed='0' AND strTransStatus IN ('00','01')  AND a.dtmCreated>='28/Jan/2020' AND a.dtmCreated<'30/Jan/2020' AND 
        strMachID = '01'and strPaymentMethod ='02'

        GROUP BY a.strMachID, a.strProdType,b.strDesc, b.strProdType  ORDER BY a.strMachID, a.strProdType 

那么你的问题是什么?错误信息不言自明。您似乎有两个帐户?我尝试使用UNION将查询合并为一个查询。错误消息告诉您出了什么问题?如果没有表架构和示例数据,人们如何执行此长查询。如果您想从我们这里得到解决,您应该通过编辑问题,在可执行的SQL Server语句中给出表模式和示例数据。
    SELECT a.strMachID, a.strProdType, b.strDesc as Product,(SELECT COUNT(strProdType) FROM tblCurrTrx WHERE strMachid = a.strMachID  and 
        strProdType = b.strProdType  and strTransStatus='00' AND ysnCashJammed='0'  AND dtmCreated>='28/Jan/2020' AND 
        dtmCreated<'30/Jan/2020' AND strMachID = '01' and strPaymentMethod ='01') As Completed ,
        (SELECT COUNT (strProdType) FROM tblCurrTrx WHERE strMachid = a.strMachID and strProdType = b.strProdType and 
        strTransStatus IN ('01') AND ysnCashJammed='0'  AND dtmCreated>='28/Jan/2020' AND dtmCreated<'30/Jan/2020' AND strMachID = '01' and strPaymentMethod ='01') As Exception ,
        (SELECT COUNT (DISTINCT strTransStatus) FROM tblCurrTrx WHERE strMachid = a.strMachID and strProdType = b.strProdType and 
        strTransStatus IN ('00','01') AND ysnCashJammed='0'  AND dtmCreated>='28/Jan/2020' AND dtmCreated<'30/Jan/2020' AND strMachID = '01' and strPaymentMethod ='01') As ProdCnt ,
        (SUM(dblPaidAmt) )- SUM(((((a.intRM1Dispense * 1 + a.intRM5Dispense * 5) + a.intRM10Dispense * 10) + a.int10CentDispense * 0.1) +
        a.int20CentDispense * 0.2) + a.int50CentDispense * 0.5) as TotValue FROM tblCurrTrx a, tblProductType b WHERE(b.strProdType = a.strProdType) AND 
        strMachID = '01' AND ysnCashJammed='0' AND strTransStatus IN ('00','01')  AND a.dtmCreated>='28/Jan/2020' AND a.dtmCreated<'30/Jan/2020' AND 
        strMachID = '01'and strPaymentMethod ='01' GROUP BY a.strMachID, a.strProdType,b.strDesc, b.strProdType 

        UNION 

SELECT a.strMachID, a.strProdType,  b.strDesc as Product,(SELECT COUNT(strProdType) FROM tblCurrTrx WHERE strMachid = a.strMachID  and 
        strProdType = b.strProdType  and strTransStatus='00' AND ysnCashJammed='0'  AND dtmCreated>='28/Jan/2020' AND 
        dtmCreated<'30/Jan/2020' AND strMachID = '01' and strPaymentMethod ='02') As Completed ,
        (SELECT COUNT (strProdType) FROM tblCurrTrx WHERE strMachid = a.strMachID and strProdType = b.strProdType and 
        strTransStatus IN ('01') AND ysnCashJammed='0'  AND dtmCreated>='28/Jan/2020' AND dtmCreated<'30/Jan/2020' AND strMachID = '01' and strPaymentMethod ='02') As Exception ,
        (SELECT COUNT (DISTINCT strTransStatus) FROM tblCurrTrx WHERE strMachid = a.strMachID and strProdType = b.strProdType and 
        strTransStatus IN ('00','01') AND ysnCashJammed='0'  AND dtmCreated>='28/Jan/2020' AND dtmCreated<'30/Jan/2020' AND strMachID = '01' and strPaymentMethod ='02') As ProdCnt ,
        (SUM(dblPaidAmt) )- SUM(((((a.intRM1Dispense * 1 + a.intRM5Dispense * 5) + a.intRM10Dispense * 10) + a.int10CentDispense * 0.1) +
        a.int20CentDispense * 0.2) + a.int50CentDispense * 0.5) as TotValue FROM tblCurrTrx a, tblProductType b WHERE(b.strProdType = a.strProdType) AND 
        strMachID = '01' AND ysnCashJammed='0' AND strTransStatus IN ('00','01')  AND a.dtmCreated>='28/Jan/2020' AND a.dtmCreated<'30/Jan/2020' AND 
        strMachID = '01'and strPaymentMethod ='02'

        GROUP BY a.strMachID, a.strProdType,b.strDesc, b.strProdType  ORDER BY a.strMachID, a.strProdType