我有一个GridView显示筛选的记录,也就是说,有在主键ID
差距。返回非连续记录
过滤器典型地施加于3列:
dev_ID (nvarchar)
date
code_ID (nvarchar)
且不会在下一查询待过滤的随机第四列。
当选择一个gridview记录,
我想之前选定的gridview的记录后,返回到DB
,并获得10个记录
(我可以在这种情况下,PK
开始) 。
这些记录可能仍然NOT
是顺序的上主键ID
和基于其它因素,
可能不存在后前10条记录或10条记录。
新的查询应前,所选记录后返回的10条记录,
其中DEV_ID = @x,code_Id = @y和日期= @someDate。
CURRENT:
我能够返回两个不同的查询所需的结果,但我无法将它们组合成一个单一的结果集。
(SELECT TOP 10
tblData.*
FROM tblData
WHERE pk <= 5481
AND dev_ID = 'REC1'
AND code_ID = 'FMU'
AND CAST(event_date_time AS DATE) = '10/18/2013'
ORDER BY pk DESC
)
UNION
(SELECT TOP 10
tblData.*
FROM tblData
WHERE pk >= 5481
AND dev_ID = 'REC1'
AND code_ID = 'FMU'
AND CAST(event_date_time AS DATE) = '10/18/2013'
ORDER BY pk ASC
)
真的可以在这部分使用一些帮助。感谢
UPDATE:
我已经搬到了这一做法,并可以使用一点帮助....
WITH NumberedMyTable AS
(
SELECT ROW_NUMBER() OVER (ORDER BY PK) AS RowNumber, *
FROM
tblData
WHERE dev_ID = 'REC1' AND code_ID = 'FMC' AND CAST(date_time as DATE) = '10/18/2013'
)
SELECT *
FROM
NumberedMyTable
WHERE
((**SELECT RowNumber FROM NumberedMyTable WHERE PK = 5481)** BETWEEN RowNumber + 10 AND RowNumber - 10)
这cuurently没有返回任何记录。
我怎样才能查询RowNumber
为WHERE
子句中使用返回所需的范围,加粗的部分?
原稿努力:
WITH recs
AS (SELECT TOP 1
*
FROM tblData
WHERE pk = GDV_PK
ORDER BY pk
),
r AS (SELECT TOP 10
tblData.*
FROM tblData
WHERE dev_ID = @x
AND code_ID = @y
ORDER BY PK DESC
)
SELECT TOP 10
*
FROM tblData
WHERE dev_ID = (SELECT dev_ID
FROM r
)
AND CAST(date_time AS DATE) = @someDate
ORDER BY pk
所以tblTelematicData是表拥有你想要的21条记录? – Michael
对不起,没有tblData,修复错误。 – htm11h