-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