distinct与order by

不知为啥,当我得查询中出现distinct时,order by 中必须包含要查询的列,否则报错。

SELECT DISTINCT
    a.DetailId,
    a.OrderId,
    a.ProductId,
    pi2.BarCode,
    pi1.ProductName,
    pi1.productCode,
    pi1.spec,
    a.UnitId,
    ui.UnitName,
    SNUM(a.DetailId) as Quantity,
    a.Discount,
    a.UnitPrice,
    a.TaxRate,
    a.ProductMoney,
    a.TaxMoney,
    a.PayableMoney,
    a.IsGiveAway,
    a.DetailId AS ColGuid,
    a.ParentGuid,
    a.DetailId AS OrderDetailId,
    a.OrderId AS RelevanceOrder,
    a.Memo,
    pi2.SalePrice AS InitUnitPrice,
    a.SEQ,      ---必须包含这个,否则报错
    a.Quantity - SNUM(a.DetailId) AS OutQuantity
FROM
    SaleOrderDetail a
LEFT JOIN ProductInfo pi1 ON a.ProductId = pi1.ProductId
LEFT JOIN ProductPrice pi2 ON a.ProductId = pi2.ProductId
AND pi2.unitid = a.unitid
LEFT JOIN UnitInfo ui ON a.UnitId = ui.UnitId
WHERE
    a.DetailId IN (SELECT COLUMN_VALUE FROM TABLE(SPLITSTR(IDS, ',')))
ORDER BY
    a.SEQ ASC

 还有就是从程序传入存储过程中的参数值,如果是个空字符串,在存储过程中获取也是个null,这里要注意。

动态sql时,sql语句不能用NVARCHAR2类型,一定要用VARCHAR2类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值