誰かが私が問題を抱えているクエリをクリーンアップするのを助けることを望んでいます。私は各リビジョンのグループから最新のリビジョンを返した後、結果を半分に分割しようとしています。SQL Serverのクエリ中に不適切なSQL構文
私はこれを半分に結果を分割することができます。
SELECT *
FROM
(
SELECT *, ntile(2) over(order by ID) as tile_nr
FROM dbTable
) x
WHERE x.tile_nr = 1
を私はこれでリビジョンのグループからの最新のリビジョンを取得することができます。
SELECT b1.*
FROM dbTable b1
INNER JOIN
(
SELECT ID, max(revision) as revision
FROM dbTable
GROUP BY ID
) as b2
ON b1.ID = b2.ID and
(
b1.revision = b2.revision or b2.revision is null
)
しかし、私はにこれらのクエリをマージしようとすると、これは次のようなものです。
SELECT *
FROM
(
SELECT *, ntile(2) over(order by ID) as tile_nr
FROM
(
SELECT b1.*
FROM dbTable b1
INNER JOIN
(
SELECT ID, max(revision) as revision
FROM dbTable
GROUP BY ID
) as b2
ON b1.ID = b2.ID and
(
b1.revision = b2.revision or b2.revision is null
)
)
) x
WHERE x.tile_nr = 1
「不正なsnytaxに近い」」というエラーが表示されます。最後の括弧が気に入らないようです。
ご協力いただければ幸いです。
クイック返信@lyriseyありがとうございます。うわー、投稿中に文法にいくつか間違いを感じました。私はセキュリティの制限のために別のマシンで作業しているので、再入力しなければなりませんでした。私は訂正して元の投稿を編集しました。 – dmod40
更新されました。サブクエリをエイリアスすることは、通常は既知の名前で作業するため、一般的には良い方法です。 – lyrisey
それを得て、学んだレッスン!とてもおかげさまで@lyrisey。 – dmod40