Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用UNION和GROUP BY_Sql Server_Group By_Union_With Statement - Fatal编程技术网

Sql server 使用UNION和GROUP BY

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,

我继承了一些复杂的SQL Server代码,我正试图将其用于新数据。我想知道的是,2017年是否有人住院、开了处方或接种了疫苗;基于他们的
唯一\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或公共表表达式。