2011-09-01 65 views
1

我正在拉什麼我留下的頭髮!結果集都很好,但我現在需要做其他事情。這裏的T-SQLxQuery - 正在返回MAX行

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. 
+0

什麼是名字在輸出中的兩列? –

回答

3

我猜測你代碼是專欄

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 
+0

+1,但外部SELECT中的最後一列應該只是'OptedOut',沒有所有這些限定符(因爲外部SELECT對REF.dbo.PATs表沒有任何意義)。 –

+0

@AndriyM這只是你和我之間,別告訴其他人。我回收了大部分的語法,只是改變了涅as的部分。我一直無法測試整個測試,我測試了我在自己的表格上更改的部分,並在現有查詢中替換了它。 –

+0

請不要擔心,我不會告訴任何人。 –