この質問に最も適した方法はわかりませんので、解決策を探すのは苦労しました。私は、特定の日にすべての注文を引き出すクエリを持っています。私は在庫が= Nのどこに注文があるのか知る必要があります。私はすべてのアイテムが目録= 'N'である注文を見つけるためにそれを探していません。それらのうちの少なくとも1つがある場合は、別の列に「Y」と言ってほしい。SQLクエリ注文時の部品が在庫切れの場合に通知する
select
a.OrderNum,
c.Inventory,
case when c.inventory = 'n' then 'Y' else 'N' end as NonStock
from orders a inner join orditems b on a.ordnum = b.ordnum inner join items
c on b.code = c.code
where a.OrderDate = '7/24/2017'
group by a.OrderNum, c.Inventory
これは私が思いついた元のコードです。私はこれが正しくないことを知っています。注文のアイテムのいずれかがc.inventory = 'N'である限り、NonStock列がYと言う場所と同様のもの(まったく異なる、全くわからない)が必要です。私はまったく正しい方向に進んでいますか?どんな指導も高く評価されます。
サンプルデータ:
a.OrderNum b.ItemNum c.Inventory
123 3 Y
123 4 N
123 5 Y
124 6 Y
124 9 N
124 8 Y
125 11 Y
125 13 Y
125 15 Y
所望の出力:
a.OrderNum NonStock
123 Y
124 Y
125 N
注文123及び124はc.inventoryでその上にアイテムを持っている= 'N' それらが上Nonstockとしてトリガを受けるため所望の出力。注文125にはすべてc.inventory = 'Y'の3つの項目がありますので、NonStockには 'N'が表示されます。
私はグループを使用しない場合、私は繰り返し注文番号を取得する必要があります。私の最終的な目標は、各注文のリストと、それにc.inventory = 'N'の項目があるかどうかを確認することです。その周りに別の方法がありますか? – Vexxums
実際、私は考えていました。私が注文のすべての項目がc.inventory = 'Y'である場合、私はそれらについて心配する必要はなく、他のものは私が探しているものになることを知っています。それは理にかなっていますか? – Vexxums
@Vexxums、yesはテーブル構造、サンプルデータ、および希望の出力を掲示しない限り言うことができません – Rahul