我正在尝试创建一个查询来为我提供一组特定的信息,但它似乎并不合适。我相信我在这里错过了一个关键的东西,但我无法想到它是什么。这是我现在的查询。
select
per.Forenames
, per.Surname
, p.Identifier2
, ef.UlcerL
, ef.UlcerR
, ef.UlcerTypeL
, ef.UlcerTypeR
, pf.AmputationType
from
Patient p
join Episode e on e.PatientID = p.PatientID
join Person per on per.PersonID = p.PersonID
join EpisodeFoot ef on ef.EpisodeID = e.EpisodeID
join PatientFootAmputation pf on pf.PatientID = p.PatientID
where
ef.UlcerL = 1 or ef.UlcerR = 1
and DATEDIFF(year, e.EpisodeDate, getdate()) > 2010
我每人大概有10行,结果完全相同,我不明白为什么。 任何帮助将非常感激。
此外,似乎pf.AmputationType并没有给我任何结果,我不认为这是真的。
编辑:这就是我现在所看到的。该行只是重复。
|Forenames|Surname|Identifier2|UlcerL|UlcerR|UlcerTypeL |UlcerTypeR|AmuptationType|
|---------|-------|-----------|------|------|-----------|----------|--------------|
| Joe |Bloggs | 12345678 | 1 | 0 |Neuropathic| NULL | Medial |
| Joe |Bloggs | 12345678 | 1 | 0 |Neuropathic| NULL | Medial |
ORDINAL_POSITION COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH IS_NULLABLE
1 PatientFootAmputationID uniqueidentifier NULL NO
2 PatientID uniqueidentifier NULL YES
3 AmputationDate datetime NULL YES
4 AmputationWhichLeg varchar 50 YES
5 AmputationNumber varchar 50 YES
6 AmputationArea varchar 300 YES
7 AmputationType varchar 300 YES
8 AmputationDescription varchar -1 YES
9 AmputationSize varchar 100 YES
10 AmputationCondition varchar 200 YES
11 AmputationComments varchar -1 YES
答案 0 :(得分:0)
如果您要加入的另一个表有多个带有连接键的记录,那么您必然会得到类似的行。您可以考虑使用ROW_NUMBER()
功能,如
select * from (
select
per.Forenames
, per.Surname
, p.Identifier2
, ef.UlcerL
, ef.UlcerR
, ef.UlcerTypeL
, ef.UlcerTypeR
, pf.AmputationType
, row_number() over(PARTITION BY p.Identifier2) as rn
from
Patient p
join Episode e on e.PatientID = p.PatientID
join Person per on per.PersonID = p.PersonID
join EpisodeFoot ef on ef.EpisodeID = e.EpisodeID
join PatientFootAmputation pf on pf.PatientID = p.PatientID
where
1 in (ef.UlcerL , ef.UlcerR)
and DATEDIFF(year, e.EpisodeDate, getdate()) > 2010 ) xxx
where rn = 1;