我有一个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的一部分返回到DataTable中,还是使用c#只访问表的row1,row2等?
答案 0 :(得分:3)
您不会显示整个选择语句,因此了解您实际在做什么是不可能的。我们可以告诉您,因为(
和)
不匹配。
我希望你的代码(缩进以明确)看起来像这样:
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
答案 1 :(得分:0)
不明白你的with records ..
是sql server还是c#代码。不看sql因为没有右括号而且没有选择。
WITH
调用CTE,CTE在内存中临时创建。
你想要像
这样的东西 with records as
(
select row_number() over ....
)
SELECT *
FROM records