0

次のクエリは、totalqtyの正しい値をもたらします。しかし、それはいくつかのアイテムの数量を数えるのを忘れるか、逃します、なぜですか?

        SELECT
         PRODID, ITEMDES, QTY,  SUM(QTY) over (partition by prodId)  as totalqty, StockCode,shipName, shipCompany, shipAddress1, shipAddress2, shipAddress3,shipPostCode,shipcity,shipCountry,shipCounty,customerMessage
         FROM orderedItems oi
        left join orders o on oi.order_id = o.order_id
        WHERE prodId = prodId
        AND o.status = 'transaction authorised'
        AND o.delTime = '#FORM.delDateselect#'


            Group by PRODID,ITEMDES,QTY, StockCode,shipName, shipCompany, shipAddress1, shipAddress2, shipAddress3,shipPostCode,shipcity,shipCountry,shipCounty,customerMessage

            ORDER BY PRODID 
4

1 に答える 1

2

あなたのwhere節は、のようにleft outer join振る舞いますinner join。次のように変更します。

WHERE
    prodId = prodId and
    (
        o.order_id is null or 
        (
            o.status = 'transaction authorised' AND
            o.delTime = '#FORM.delDateselect#'
        )
    )

その理由は、一致する順序がない場合はorders o.statusになりNULL、したがってに等しくないため'transaction authorised'です。

さらに、groupbyは必要ありません。あなたはすでにあなたのために行う分析機能を持っていSUMます。

于 2012-08-31T16:49:25.950 に答える