全部,
我的查询是
select * from [order] where createdon<getdate()-7
and orderid between
(select top 1 orderid from [order] where createdon<getdate()-7 order by orderid) as oId
and oId+100 order by orderid
这是错误的。请告诉我哪里出错了
我的目的是从订单表中获得超过7天的100个订单。请不要建议使用row_number
取出它由于
答案 0 :(得分:3)
您不能在WHERE
子句中使用别名。但是,由于您的子查询只返回一行,您可以将其交叉连接到[order]
表并过滤返回的顶部orderid
值,如下所示:
SELECT [order].*
FROM [order]
CROSS JOIN (
SELECT TOP 1 orderid
FROM [order]
WHERE createdon < GETDATE() - 7
ORDER BY orderid
) toporder
WHERE [order].createdon < GETDATE() - 7
AND [order].orderid BETWEEN toporder.orderid AND toporder.orderid + 100
答案 1 :(得分:3)
select * from
(
select top 100 * from [order] where
createdon<dateadd(day, -7, getdate())
order by orderid desc
)
order by orderid asc
答案 2 :(得分:1)
假设您使用MSSQL,使用TOP关键字来限制输出:
SELECT TOP 100 ...