0

クエリに関するヘルプ、またはそれをカバーする回答へのリンクが必要です。

私は2つのテーブルを持っていますSTOCK_ITEMS:STOCK_LOC_INFO

STOCK_ITEMS多くのフィールドがありますが、関心のある 2 つはSTOCKCODESTOCK_CLASSIFICATION

STOCK_LOC_INFOすべての在庫場所 (11 か所) に対するすべての在庫場所のレコードが含まれていますSTOCKCODE

STOCK_ITEMS:

 item1,class 1
 item2,class 2
 item3,class 1

STOCK_LOC_INFO

item1,location1,qty1
item1,location2,qty2
item1,location3,qty3

など、証券コードごとに 11 行を繰り返します。

今... 11 か所のうち 5 か所で、特定のクラスの在庫コード (数量が 0 より大きい) がいくつあるかを調べたいと考えています。私はこれを試しました:

select COUNT(SOH.STOCKCODE)
from dbo.STOCK_ITEMS SOH
Inner join STOCK_LOC_INFO SLI
on SOH.STOCKCODE = SLI.STOCKCODE
where SLI.QTY > 0 and SLI.LOCATION in(1,2,3,9,11)

9790 という結果が得られました - これは高すぎます (約 900 と予想されます)。これは、必要な部品番号が 0 を超えて Stock Loc テーブルに表示されるたびにカウントされるためです...しかし、各ストックコードに対して yes または no のみが必要です。各数量ではありません。

COUNTIF などが必要だと思います。私はとても迷っています!

どんな助けでも大歓迎です。

4

4 に答える 4

1

基準を満たす個別のストックコードの数だけが必要ですか? もしそうなら:

SELECT COUNT(DISTINCT SOH.STOCKCODE)
FROM STOCK_ITEMS SOH
INNER JOIN STOCK_LOC_INFO SLI
ON SOH.STOCKCODE = SLI.STOCKCODE
WHERE SLI.QTY > 0 AND SLI.LOCATION IN(1,2,3,9,11)

参加する前に SLI テーブルを制限することもできます。

SELECT COUNT(SOH.STOCKCODE)
FROM STOCK_ITEMS SOH
INNER JOIN (SELECT DISTINCT STOCKCODE 
            FROM STOCK_LOC_INFO
            WHERE QTY > 0 AND LOCATION IN(1,2,3,9,11)
            )SLI
ON SOH.STOCKCODE = SLI.STOCKCODE
于 2013-06-04T21:37:03.693 に答える