HAVING句に問題があります。
説明:各ordernoには少なくとも1つのrxnumが関連付けられています。しかし、各rxnumは複数のスクリプト(scriptitemcnt)を持つことができます。私の問題は、HAVING節をに限定しようとしていることです。は、8以下のアイテムの合計を持つordernoを引き出します。クエリは実行されますが、アイテムの合計が8を超えるオーダーを引っ張っています。ここに私のコードです:HAVING SQL Server 2008の句に関する問題
SELECT
oh.orderno,
od.rxnum,
SUM(od.scriptitemcnt) as scriptitemcnt,
od.ndctopick,
od.drugdesc,
od.unitno,
od.status,
od.datetimefilled,
od.packingunit,
od.datetimepacked,
oh.totesideinorder
FROM
mck_hvs.oldorderdetails od with(nolock),
mck_hvs.oldorderheader oh with(nolock)
WHERE
oh.orderno = od.orderno
and od.status != 5
and (@dateFrom is NULL or od.datetimepacked >= cast(@dateFrom as datetime))
and (@dateTo is NULL or od.datetimepacked < cast(@dateTo as datetime) + 1)
and oh.totesideinorder = 'N'
and od.packingunit NOT IN (695, 696, 697, 698)
GROUP BY
oh.orderno,
od.rxnum,
od.scriptitemcnt,
od.ndctopick,
od.drugdesc,
od.rxnum,
od.unitno,
od.status,
od.datetimefilled,
od.packingunit,
od.datetimepacked,
oh.totesideinorder
HAVING
SUM(od.scriptitemcnt) <= '8'
ORDER BY
oh.orderno asc,
od.rxnum asc
テーブルやデータはありません。より小さな(列数が少ない)テーブルと問題を示しているサンプルデータを単純化し、それを質問に追加してください。 –
投稿したクエリに間違ったことはありません。問題を再現するスクリプトを追加する必要があります。そうしないと、私たちはあなたを助けません。 –
SUM(od.scriptitemcnt)<= '8'なぜ '8'は文字列ですか? INTEGER儀式でなければなりませんか? –