たくさんのレコードが入ったテーブルがあります。
テーブルは次のようになります(簡略化):
ID DoID DoQty DoType DoValue
1 17 1 Door 15
2 17 -1 Door -15
3 18 1 Window 75
4 19 1 Bed 125
5 19 1 Bed 134
これが私が引っ張りたいものです
ID DoId DoQty DoType DoValue
3 18 1 WIndows 75
4 19 1 Bed 125
5 19 1 Bed 134
DoQtyが-1である2行目があるため、DoID = 17は必要ありません。つまり、全体的なDoQty = 0です。DoQty= -1がないレコードのみが必要です。ここでの問題は、DoIDでグループ化したくないということです。レコード行全体を表示できるようにしたい(グループ化なし)
編集:
残念ながら、私は私の質問を正しく説明しなかったかもしれません。基本的に、次のクエリを実行すると、正しいカウントが得られますが、私の目標は各行の詳細を取得することです。
SELECT t.DoID,
'Available' = Sum(t.DoQty)
From t
GROUP BY t.DoID
これにより、何もできないグループ化された結果が得られます。
ここで条件付き集計を使用できます。
WITH cte AS (
SELECT DoID
FROM yourTable
GROUP BY DoID
HAVING SUM(CASE WHEN DoQty < 0 THEN 1 ELSE 0 END) = 0
)
SELECT *
FROM yourTable
WHERE DoID IN (SELECT DoID FROM cte);
これDoID
により、レコードのグループに負の値がないすべてのDoQty
値が返されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加