返回 rownumber() 作为查询的一部分
本文关键字:查询 一部分 rownumber 返回 | 更新日期: 2023-09-27 18:32:11
我有一个SQL查询,它返回到数据表dtStories(c#)。
with records as (select row_number() over (order by pages.createdate desc)as 'row',
field1, field2...etc. from records where row between 1 and 7
(在其他情况下,我需要"n"行或x和y行之间,因此我没有使用简单的选择前7个查询。
我试图根据它所在的行做稍微不同的事情,所以我正在查询 row[0],认为这会包含行号。但是,在我的 SQL Server 中检查返回,它实际上只返回字段 1、字段 2...等等,这显然是为什么我的
foreach (Datarow row in dtStories)
{
if (row[0].ToString() == "1")
{
...
}
}
不行。
有没有办法确保行作为SQLQuery的一部分返回到数据表中,或者使用c#只访问表的row1,row2等?
您不显示整个选择语句,因此不可能知道您实际在做什么。 我们可以说这是因为(
和)
不匹配。
我希望您的代码(缩进以明确)如下所示:
with records as
(
select row_number() over (order by pages.createdate desc)as 'row',
field1, field2 -- ...
from original_table
)
select
field1, field2 -- ...
from records
where row between 1 and 7
现在应该清楚了...要将行列包含在第二个选择列表中(在 CTE 外部)
with records as
(
select row_number() over (order by pages.createdate desc)as 'row',
field1, field2 -- ...
from original_table
)
select row, -- here!
field1, field2 -- ...
from records
where row between 1 and 7
不
明白你的with records ..
是SQL Server还是C#代码。看起来不是sql,因为没有右括号,也没有选择。
WITH
称为 CTE,CTE 是在内存中临时创建的。
你想要类似的东西
with records as
(
select row_number() over ....
)
SELECT *
FROM records