4

私はSQLサーバーを初めて使用するので、この分野でOracle SQLを翻訳するのに本当に苦労しています。通常、Oracle SQLでは「in」句で2つの項目を使用しますが、SQLサーバーではうまく機能しないと思いますか?

ここに私のデータがあります:


notes_table

a_id     |     idxno     |     note_text

1              0               text 1 for item b_id = 61
2              1               text 2 for item b_id = 61
3              0               text 1 for item b_id = 71
4              1               text 2 for item b_id = 71
5              2               text 3 for item b_id = 71
6              0               text 1 for item b_id = 81
7              0               text 1 for item b_id = 91
8              1               text 2 for item b_id = 91

notes_bridge_table

a_id     |     b_id     

1              61       
2              61       
3              71       
4              71       
5              71       
6              81       
7              91       
8              91     

(**注: max(a_id) が notes_table の max(idxno) であることは保証されていません)

item_table

b_id     |     item_desc
61             desc of item 61
71             desc of item 71
81             desc of item 81
91             desc of item 91

私の望みは、メモ表から最大のメモを持つ項目のレポートを表示することです。次のようなものです:

結果

b_id     |     item_desc         |    note
61             desc of item 61        text 2 for item b_id = 61
71             desc of item 71        text 3 for item b_id = 61
81             desc of item 81        text 1 for item b_id = 61
91             desc of item 91        text 2 for item b_id = 61

私が試したこと:

select item_table.b_id, item_table.item_desc, 
from item_table, notes_bridge_table
where item_table.b_id = notes_bridge_table.b_id
and notes_bridge_table.a_id in
(select a_id from notes_table
 where notes_table.a_id = notes_bridge_table.a_id
 and notes_table.idxno, notes_table.a_id in
 (select max(idxno), a_id from notes_table group by a_id))

しかし、「and notes_table.idxno、notes_table.a_id in」の最後から2番目の行は、SQLサーバーでは有効ではないようです。

4

2 に答える 2