SQL CASE 查询消息 116 - 当子查询未与 EXISTS 一起引入时,只能在选择列表中指定一个表达式


SELECT CASE 
        WHEN (SUM(cashBySum) > SUM(cashByName))
            THEN (
                    SELECT Sale.partyDBId
                        ,Sale.id
                        ,Sale_Products.quantity
                        ,Sale_Products.FinalWeight
                        ,Sale_Products.finalRate
                        ,Sale_Products.SaleDBid
                        ,product.productNameUR
                    FROM Sale
                    INNER JOIN Sale_Products ON Sale.id = Sale_Products.SaleDBid
                    INNER JOIN product ON Sale_Products.productBDid = product.id
                    WHERE (Sale.partyDBId = '20031')
                        AND (
                            CAST(Sale.SaleDate AS DATE) BETWEEN '2015-04-09 12:31:41.000'
                                AND '2016-04-09 12:31:41.000'
                            )
                    )
        WHEN (SUM(cashBySum) < SUM(cashByName))
            THEN N' بنام'
        ELSE ''
        END AS balancetype
    ,SUM(cashBySum) - SUM(cashByName) AS balance
    ,ABS(SUM(cashBySum) - SUM(cashByName)) AS blc
    ,partyId
FROM leger AS leger_1
WHERE (partyId = '20031')
    AND (DATE < '2016-04-09 12:31:41.000')
GROUP BY partyId

balancetype只能是一个值(例如 N' بنام'''),但值不多(Sale.partyDBId, Sale.id, Sale_Products.quantity, Sale_Products.FinalWeight, Sale_Products.finalRate,Sale_Products.SaleDBid,product.productNameUR)。

子查询必须准确返回一个值(一行,一列)。

最新更新