次のSQLステートメントを正しく記述しているかどうかわかりませんか?(T-SQLを使用)
私は2つのテーブルを持っています:
表1:[dbo]。[t_Orgnzs]
[id] = INT
[nm] = NVARCHAR(256)
表2:[dbo]。[t_Usrs]
[id] = INT
[ds] = NVARCHAR(256)
[oid] = INT (referenced [dbo].[t_Orgnzs].[id])
表2から要素を1から16の昇順で[oid]列の順に選択する必要がありますが、[oid]が表1の文字列を参照しているため、実際に返す必要があります。
たとえば、テーブルが次のようにレイアウトされている場合:表1:
id nm
1 Name 1
2 Name 2
3 Name 3
4 Name 4
そして表2:
id ds oid
1 A 2
2 B 4
3 C 1
結果のクエリは次を返す必要があります。
3 C Name 1
1 A Name 2
2 B Name 4
これが私が使用しているSQLです:
WITH ctx AS (
SELECT [id],
[ds],
(SELECT [nm] FROM [dbo].[t_Orgnzs] WHERE [id]=[dbo].[t_Usrs].[oid]) AS organizName,
ROW_NUMBER() OVER (ORDER BY organizName ASC) AS rowNum
FROM [dbo].[t_Usrs]
)
SELECT [id], [ds], organizName
FROM ctx
WHERE rowNum>=1 AND rowNum<=16;
そして、「無効な列名'organizName'」というエラーが発生します。