我想从表中选择不同行(每页)的固定大小+所有行的计数(每个查询)。我的查询没有计算所有行:
select distinct takenBookTitle, user from Books
where user = 'username'
order by takenBookTitle
offset 0 rows fetch next 3 rows only
但是有了这个结果,我需要检索所有行的计数(没有偏移..获取)。
如果没有必要,可以使用 count(*)OVER():
select takenBookTitle, user, count(*) OVER() AS count
from Books
where user = 'username'
order by takenBookTitle offset 0 rows fetch next 3 rows only
结果:
BookTitle1 userName1 10
BookTitle2 userName2 10
BookTitle3 userName3 10
但我想计算不同行,但 计数()OVER()* 不允许。
答案 0 :(得分:0)
您可以使用相同的约束(where子句)计算另一个查询中的count
并交叉连接到它,因为它只包含一行,因此相应的信息将相应地附加到每一行:
select
t.*, g.cnt
from (
select distinct takenBookTitle, user from Books
where user = 'username'
order by user offset 0 rows fetch next 3 rows only
) t
cross join (
select count(*) as cnt
from Books
where user = 'username'
) g
我想知道为什么你按user
排序,如果你的where子句只指定了一个,但你可能正在使用多个用户并向我们展示简化查询。如果没有,那个顺序似乎没必要