-1
希望有人可以幫我清理一個查詢,我遇到了問題。在我從每組修訂版中返回最新修訂版後,我試圖將結果分成一半。查詢SQL服務器時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