我Row_Number()在where子句中找到了一个用函数回答的问题.当我尝试一个查询时,我收到以下错误:
"消息4108,级别15,状态1,行1窗口函数只能出现在SELECT或ORDER BY子句中."
这是我试过的查询.如果有人知道如何解决这个问题,请告诉我.
SELECT employee_id
FROM V_EMPLOYEE
WHERE row_number() OVER ( ORDER BY employee_id ) > 0
ORDER BY Employee_ID
Run Code Online (Sandbox Code Playgroud) 有没有办法从SqlAlchemy查询中获取prev/next记录?像这样:
record.id
record.next.id
record.prev.id
Run Code Online (Sandbox Code Playgroud)
我可以自己为每个模型添加prev/next方法,但我想知道是否已经有一些我忽略的自动方式.有问题的Web应用程序是用Pylons编写的.
编辑: 这可能是一个肮脏的黑客,但它的工作原理.我将sqlalchemy Session对象导入到我的模型中并执行了以下操作:
def next(self):
return Session.query(Blog).filter(Blog.id > self.id).order_by(Blog.id).first()
def prev(self):
return Session.query(Blog).filter(Blog.id < self.id).order_by(desc(Blog.id)).first()
Run Code Online (Sandbox Code Playgroud) 这是我拥有的数据样本.
-ID- -Rank- -Type- -Status- -Amount-
1142474 2 Under Offer Approved 23
1148492 1 Present Current 56
1148492 2 Under Offer Approved 3
2273605 1 Present Current 24
Run Code Online (Sandbox Code Playgroud)
如果ID相同,我只想要排名最高的记录.所以查询的最终结果.
-ID- -Rank- -Type- -Status- -Amount-
1142474 2 Under Offer Approved 23
1148492 1 Present Current 56
2273605 1 Present Current 24
Run Code Online (Sandbox Code Playgroud)
现在获取原始数据集是一项昂贵的操作,因此我不希望按ID进行分组,然后分级,然后再次加入数据集.因此查询需要以另一种方式完成其工作.
干杯安东尼