Tsql xQuery-返回最大行数
我在拔我漏掉的头发!结果集都很好,但我现在需要做些别的事情。这是T-SQLTsql xQuery-返回最大行数,tsql,sql-server-2008,xquery,xquery-sql,Tsql,Sql Server 2008,Xquery,Xquery Sql,我在拔我漏掉的头发!结果集都很好,但我现在需要做些别的事情。这是T-SQL SELECT documentdate , x.a.value('(Date)[1]','varchar(50)') as [Date] , x.a.value('(ReadCode)[1]','varchar(50)') as [Read Code] , x.a.value('(Rubric)[1]','varchar(200)') as [Rubric] , x.a.
SELECT documentdate
, x.a.value('(Date)[1]','varchar(50)') as [Date]
, x.a.value('(ReadCode)[1]','varchar(50)') as [Read Code]
, x.a.value('(Rubric)[1]','varchar(200)') as [Rubric]
, x.a.value('(Notes)[1]','varchar(200)') as [Notes]
, x.a.value('(Notes1)[1]','varchar(200)') as [Notes1]
, x.a.value('(Episodicity)[1]','varchar(50)') as [Episodicity]
, REF.dbo.PATs.OptedOut
FROM
EPR.dbo.PCTX_CONT t INNER JOIN
REF.dbo.PATNumbers
ON t.PATNoID = REF.dbo.PATNumbers.PATNoID
INNER JOIN
REF.dbo.PATs ON
REF.dbo.PATNumbers.CurrentNo =
REF.dbo.PATs.ManorNo
CROSS APPLY
t.DocumentXML.nodes('//CONT') x(a)
WHERE REPLACE(REF.dbo.PATNumbers.CurrentNo,' ','')=123456789
结果是
2010-05-13 8I64.
2010-05-13 8I6C.
2010-02-09 8I24.
2010-02-09 8I65.
2010-02-09 8I26.
2010-02-09 8I6B.
2009-06-02 8I24.
2009-03-17 8I26.
2009-01-06 8I64.
2009-01-06 8I6C.
2006-11-14 8I74.
2006-11-14 8I75.
但是,我需要的是代码的最新一行,以便读取结果
2010-05-13 8I64.
2010-05-13 8I6C.
2010-02-09 8I24.
2010-02-09 8I65.
2010-02-09 8I26.
2010-02-09 8I6B.
2006-11-14 8I74.
2006-11-14 8I75.
我猜你的代码就是标题栏
select documentdate,[Date], [Read Code], [Rubric], [Notes], [Notes1],
[Episodicity],REF.dbo.PATs.OptedOut FROM
(
SELECT documentdate
, x.a.value('(Date)[1]','varchar(50)') as [Date]
, x.a.value('(ReadCode)[1]','varchar(50)') as [Read Code]
, x.a.value('(Rubric)[1]','varchar(200)') as [Rubric]
, x.a.value('(Notes)[1]','varchar(200)') as [Notes]
, x.a.value('(Notes1)[1]','varchar(200)') as [Notes1]
, x.a.value('(Episodicity)[1]','varchar(50)') as [Episodicity]
, REF.dbo.PATs.OptedOut
, row_number() over (partition by x.a.value('(Rubric)[1]','varchar(200)')
order by x.a.value('(Date)[1]','varchar(50)') desc) as rn
FROM
EPR.dbo.PCTX_CONT t INNER JOIN
REF.dbo.PATNumbers
ON t.PATNoID = REF.dbo.PATNumbers.PATNoID
INNER JOIN
REF.dbo.PATs ON
REF.dbo.PATNumbers.CurrentNo =
REF.dbo.PATs.ManorNo
CROSS APPLY
t.DocumentXML.nodes('//CONT') x(a)
WHERE REPLACE(REF.dbo.PATNumbers.CurrentNo,' ','')=123456789
) a where rn = 1
输出中两列的名称是什么?+1,但是外部选择中的最后一列可能只是
OptedOut
,没有所有的限定符(因为外部选择对REF.dbo.PATs
表一无所知)。@AndriyM这只是你和我之间的事,不要告诉任何人。我循环使用了大部分语法,只更改了Nessary部分。我无法测试整体,我在自己的表上测试了我更改的部分,并在现有查询中替换了它。请不要担心,我不会告诉任何人。