私は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サーバーでは有効ではないようです。