贫民窟里的程序高手

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

不知为啥,当我得查询中出现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类型。

posted on 2014-11-17 15:03  贫民窟里的程序高手  阅读(1339)  评论(0编辑  收藏  举报