Sql server 使用UNION和GROUP BY
我继承了一些复杂的SQL Server代码,我正试图将其用于新数据。我想知道的是,2017年是否有人住院、开了处方或接种了疫苗;基于他们的Sql server 使用UNION和GROUP BY,sql-server,group-by,union,with-statement,Sql Server,Group By,Union,With Statement,我继承了一些复杂的SQL Server代码,我正试图将其用于新数据。我想知道的是,2017年是否有人住院、开了处方或接种了疫苗;基于他们的唯一\u id。我正在查看各种表格,以找到他们的卫生系统联系人,提取2017年的相关事件,然后添加table.dem和table.geo中的人口统计信息 我希望每个唯一的\u id有一行,显示1,如果他们与医院有联系,或得到处方或免疫接种;然后是他们的人口统计信息 摘要代码为: WITH CORE_POP_17 AS ( SELECT unique_id,
唯一\u id
。我正在查看各种表格,以找到他们的卫生系统联系人,提取2017年的相关事件,然后添加table.dem
和table.geo
中的人口统计信息
我希望每个唯一的\u id
有一行,显示1,如果他们与医院有联系,或得到处方或免疫接种;然后是他们的人口统计信息
摘要代码为:
WITH CORE_POP_17 AS
( SELECT unique_id,
year_num,
MAX(aaa) as aaa,
MAX(ccc) as ccc,
MAX(bbb) as bbb
FROM (
SELECT unique_id,
year(event_date) as year_num,
1 as aaa,
0 as ccc,
0 as bbb
FROM table.hosps
WHERE year_num IN (2017)
UNION
SELECT unique_id,
year(event_date) as year_num,
0 as aaa,
1 as ccc,
0 as bbb
FROM table.pharms
WHERE year_num IN (2017)
UNION
SELECT unique_id,
year(event_date) as year_num,
0 as aaa,
0 as ccc,
1 as bbb
FROM table.imms
WHERE year_num IN (2017)
)
GROUP BY unique_id
)
SELECT
unique_id,
aaa,
bbb,
ccc,
dems.rrr,
geo.ppp
FROM CORE_POP_17 CORE_POP
LEFT JOIN table.dems dems
ON dems.unique_id = CORE_POP.unique_id
LEFT JOIN table.geo geo
on geo.unique_ID = CORE_POP.unique_id
GROUP BY命令正在引发错误
“关键字组附近的语法不正确”
非常感谢任何能让这项工作顺利进行的帮助。谢谢。括号中的嵌套内部联合查询缺少别名。只要在
groupby
上方的括号后面紧跟一个字符(任何字母)就可以解决这个问题
完成此操作后,您还会发现year\u num
在SELECT
列表中无效,因为它不是groupby
或聚合函数的一部分。由于年份总是2017
,您可以将其替换为字符串文字,或者将dearneum
添加到groupby
列表中
这就是我想要的。我没有注意到查询的逻辑是否有意义。。。只有明显的语法内容。您的子查询(派生表)需要有别名。投票以键入问题的形式结束。使用as的FYI
称为CTE或公共表表达式。