SQL 分组在一起,这样数据就不会重复
SQL grouping together so data does not repeat
在 table 中有数据,并尝试查询它,以便数据读取例如像 Motrin |毫克 | 25 | 4 |天|疼痛,排成一列。从图像中...我将它们全部放在“答案”栏下。我的查询已将它们全部显示出来……但它重复了数据。任何人都可以帮助将其分组到 DrilldownQuestionID 下吗?
下面是我创建的示例数据:
PracticeID
PatientID
ParentPageID
ParentPageNumber
QuestionID
DrilldownQuestionID
DrilldownAnsRecordID
EncounterID
Answer
1
111111
48
5
1475
2091
1
encounter1
Tylenol
1
111111
48
5
1475
2092
1
encounter1
mg
1
111111
48
5
1475
2093
1
encounter1
500
1
111111
48
5
1475
2094
1
encounter1
3
1
111111
48
5
1475
2095
1
encounter1
day
1
111111
48
5
1475
2096
1
encounter1
Headache
1
111111
48
5
1475
2091
2
encounter1
Motrin
1
111111
48
5
1475
2092
2
encounter1
mg
1
111111
48
5
1475
2093
2
encounter1
25
1
111111
48
5
1475
2094
2
encounter1
4
1
111111
48
5
1475
2095
2
encounter1
day
1
111111
48
5
1475
2096
2
encounter1
Pain
下面是我的查询;
select distinct j.Answer as Name,
n.Answer as Dosage,
k.Answer as [Dosage Unit],
o.Answer as [How Many],
l.Answer as [How Often],
m.Answer as [Taken For]
from
(select isnull(a.[Answer],'') as Answer,
a.EncounterID
from C_ItemDrillDown c join D_AWVAnswers a
on c.ItemDrilldownID = a.DrilldownQuestionID
and a.QuestionID = 1475
and a.DrilldownQuestionID = 2091
where a.EncounterID = @EncounterID) as j
join
(select isnull(a.[Answer],'') as Answer,
a.EncounterID
from C_ItemDrillDown c join D_AWVAnswers a
on c.ItemDrilldownID = a.DrilldownQuestionID
and a.QuestionID = 1475
and a.DrilldownQuestionID = 2093
where a.EncounterID = @EncounterID) as n
on j.EncounterID = n.EncounterID
join
(select isnull(a.[Answer],'') as Answer,
a.EncounterID
from C_ItemDrillDown c join D_AWVAnswers a
on c.ItemDrilldownID = a.DrilldownQuestionID
and a.QuestionID = 1475
and a.DrilldownQuestionID = 2092
where a.EncounterID = @EncounterID) as k
on n.encounterID = k.EncounterID
join
(select isnull(a.[Answer],'') as Answer,
a.EncounterID
from C_ItemDrillDown c join D_AWVAnswers a
on c.ItemDrilldownID = a.DrilldownQuestionID
and a.QuestionID = 1475
and a.DrilldownQuestionID = 2094
where a.EncounterID = @EncounterID) as o
on k.EncounterID = o.EncounterID
join
(select isnull(a.[Answer],'') as Answer,
a.EncounterID
from C_ItemDrillDown c join D_AWVAnswers a
on c.ItemDrilldownID = a.DrilldownQuestionID
and a.QuestionID = 1475
and a.DrilldownQuestionID = 2095
where a.EncounterID = @EncounterID) as l
on o.encounterID = l.EncounterID
join
(select isnull(a.[Answer],'') as Answer,
a.EncounterID
from C_ItemDrillDown c join D_AWVAnswers a
on c.ItemDrilldownID = a.DrilldownQuestionID
and a.QuestionID = 1475
and a.DrilldownQuestionID = 2096
where a.EncounterID = @EncounterID) as m
on l.encounterID = m.EncounterID
我想要的结果是:
Name
Dosage
Dosage Unit
How Many
How Often
Taken For
Tylenol
500
mg
3
day
Headache
Motrin
25
mg
4
day
Pain
所以看起来你在 straight-forward 枢轴之后,类似于以下内容:
select
max(case when DrilldownQuestionID = 2091 then Answer end) [Name],
max(case when DrilldownQuestionID = 2092 then Answer end) [Dosage Unit],
max(case when DrilldownQuestionID = 2093 then Answer end) Dosage,
max(case when DrilldownQuestionID = 2094 then Answer end) [How Many],
max(case when DrilldownQuestionID = 2095 then Answer end) [How Often],
max(case when DrilldownQuestionID = 2096 then Answer end) [Taken For]
from t
group by DrilldownAnsRecordID;
我已经省略了多余的(针对问题的)列,如果您需要使用它们,您也会group-by。
结果:
在 table 中有数据,并尝试查询它,以便数据读取例如像 Motrin |毫克 | 25 | 4 |天|疼痛,排成一列。从图像中...我将它们全部放在“答案”栏下。我的查询已将它们全部显示出来……但它重复了数据。任何人都可以帮助将其分组到 DrilldownQuestionID 下吗?
下面是我创建的示例数据:
PracticeID | PatientID | ParentPageID | ParentPageNumber | QuestionID | DrilldownQuestionID | DrilldownAnsRecordID | EncounterID | Answer |
---|---|---|---|---|---|---|---|---|
1 | 111111 | 48 | 5 | 1475 | 2091 | 1 | encounter1 | Tylenol |
1 | 111111 | 48 | 5 | 1475 | 2092 | 1 | encounter1 | mg |
1 | 111111 | 48 | 5 | 1475 | 2093 | 1 | encounter1 | 500 |
1 | 111111 | 48 | 5 | 1475 | 2094 | 1 | encounter1 | 3 |
1 | 111111 | 48 | 5 | 1475 | 2095 | 1 | encounter1 | day |
1 | 111111 | 48 | 5 | 1475 | 2096 | 1 | encounter1 | Headache |
1 | 111111 | 48 | 5 | 1475 | 2091 | 2 | encounter1 | Motrin |
1 | 111111 | 48 | 5 | 1475 | 2092 | 2 | encounter1 | mg |
1 | 111111 | 48 | 5 | 1475 | 2093 | 2 | encounter1 | 25 |
1 | 111111 | 48 | 5 | 1475 | 2094 | 2 | encounter1 | 4 |
1 | 111111 | 48 | 5 | 1475 | 2095 | 2 | encounter1 | day |
1 | 111111 | 48 | 5 | 1475 | 2096 | 2 | encounter1 | Pain |
下面是我的查询;
select distinct j.Answer as Name,
n.Answer as Dosage,
k.Answer as [Dosage Unit],
o.Answer as [How Many],
l.Answer as [How Often],
m.Answer as [Taken For]
from
(select isnull(a.[Answer],'') as Answer,
a.EncounterID
from C_ItemDrillDown c join D_AWVAnswers a
on c.ItemDrilldownID = a.DrilldownQuestionID
and a.QuestionID = 1475
and a.DrilldownQuestionID = 2091
where a.EncounterID = @EncounterID) as j
join
(select isnull(a.[Answer],'') as Answer,
a.EncounterID
from C_ItemDrillDown c join D_AWVAnswers a
on c.ItemDrilldownID = a.DrilldownQuestionID
and a.QuestionID = 1475
and a.DrilldownQuestionID = 2093
where a.EncounterID = @EncounterID) as n
on j.EncounterID = n.EncounterID
join
(select isnull(a.[Answer],'') as Answer,
a.EncounterID
from C_ItemDrillDown c join D_AWVAnswers a
on c.ItemDrilldownID = a.DrilldownQuestionID
and a.QuestionID = 1475
and a.DrilldownQuestionID = 2092
where a.EncounterID = @EncounterID) as k
on n.encounterID = k.EncounterID
join
(select isnull(a.[Answer],'') as Answer,
a.EncounterID
from C_ItemDrillDown c join D_AWVAnswers a
on c.ItemDrilldownID = a.DrilldownQuestionID
and a.QuestionID = 1475
and a.DrilldownQuestionID = 2094
where a.EncounterID = @EncounterID) as o
on k.EncounterID = o.EncounterID
join
(select isnull(a.[Answer],'') as Answer,
a.EncounterID
from C_ItemDrillDown c join D_AWVAnswers a
on c.ItemDrilldownID = a.DrilldownQuestionID
and a.QuestionID = 1475
and a.DrilldownQuestionID = 2095
where a.EncounterID = @EncounterID) as l
on o.encounterID = l.EncounterID
join
(select isnull(a.[Answer],'') as Answer,
a.EncounterID
from C_ItemDrillDown c join D_AWVAnswers a
on c.ItemDrilldownID = a.DrilldownQuestionID
and a.QuestionID = 1475
and a.DrilldownQuestionID = 2096
where a.EncounterID = @EncounterID) as m
on l.encounterID = m.EncounterID
我想要的结果是:
Name | Dosage | Dosage Unit | How Many | How Often | Taken For |
---|---|---|---|---|---|
Tylenol | 500 | mg | 3 | day | Headache |
Motrin | 25 | mg | 4 | day | Pain |
所以看起来你在 straight-forward 枢轴之后,类似于以下内容:
select
max(case when DrilldownQuestionID = 2091 then Answer end) [Name],
max(case when DrilldownQuestionID = 2092 then Answer end) [Dosage Unit],
max(case when DrilldownQuestionID = 2093 then Answer end) Dosage,
max(case when DrilldownQuestionID = 2094 then Answer end) [How Many],
max(case when DrilldownQuestionID = 2095 then Answer end) [How Often],
max(case when DrilldownQuestionID = 2096 then Answer end) [Taken For]
from t
group by DrilldownAnsRecordID;
我已经省略了多余的(针对问题的)列,如果您需要使用它们,您也会group-by。
结果: