Sql server 2008 在选择列表中嵌入count语句

Sql server 2008 在选择列表中嵌入count语句,sql-server-2008,gis,esri,Sql Server 2008,Gis,Esri,我正在将Esri ArcMap 10.0与Microsoft Sql Server 2008 R2配合使用 我有两张桌子: MN_SCHOOLS_PUBLIC-学校ID字段称为ORGID_REL TRPD_Schdgrps_学校-学校ID字段称为学校代码 第一个表格只是学校及其地址的列表,第二个表格是学校集体预订的列表。表2中的每个学校都存在于表1中。我正在尝试创建一个查询,在该查询中,我将生成一个已进行多次预订的学校列表。这就是我想到的: select School_Code from cen

我正在将Esri ArcMap 10.0与Microsoft Sql Server 2008 R2配合使用

我有两张桌子:

MN_SCHOOLS_PUBLIC-学校ID字段称为ORGID_REL TRPD_Schdgrps_学校-学校ID字段称为学校代码 第一个表格只是学校及其地址的列表,第二个表格是学校集体预订的列表。表2中的每个学校都存在于表1中。我正在尝试创建一个查询,在该查询中,我将生成一个已进行多次预订的学校列表。这就是我想到的:

select School_Code
from central2.gisadmin.TRPD_SCHDGRPS_SCHOOLS
group by School_Code
having COUNT(*) > 1
这就成功了,或者至少已经足够接近了。然而,我的问题在于,我必须在GIS软件中运行此查询,Esri的ArcMap中的查询工具“按属性选择”总是为用户启动Select语句。因此,当您打开该工具时,查询将以以下内容开始:

select * from gisadmin.MN_SCHOOLS_PUBLIC
我想选择表1中所有在表2中有多个条目的学校,我需要从上面的select语句开始。这是我想到的,但我似乎不知道如何让它工作:

select * from gisadmin.MN_SCHOOLS_PUBLIC
where EXISTS 
(SELECT * 
FROM central2.GISADMIN.TRPD_Schdgrps_Schools 
WHERE central2.GISADMIN.MN_Schools_PUBLIC.ORGID_REL =
(select * from central2.gisadmin.TRPD_SCHDGRPS_SCHOOLS
where School_Code in
(select School_Code
from central2.gisadmin.TRPD_SCHDGRPS_SCHOOLS
group by School_Code
having COUNT(*) > 1)))
任何帮助都将不胜感激

请尝试以下方法:

SELECT * FROM gisadmin.MN_SCHOOLS_PUBLIC msp
WHERE msp.School_Code IN
(
    SELECT tss.School_Code
    FROM central2.gisadmin.TRPD_SCHDGRPS_SCHOOLS tss
    GROUP BY tss.School_Code
    HAVING COUNT(*) > 1
)

这在SQL Management Studio中非常有效,但在GIS中不起作用,因为更改了第一个位置之前的Select语句,您添加了msp,它需要从gisadmin.MN_SCHOOLS_PUBLIC开始选择*,只有在WHERE子句之后才能进行更改从gisadmin.MN_SCHOOLS_PUBLIC开始选择*,从gisadmin.MN_SCHOOLS_PUBLIC.ORGID_REL开始从central2.gisadmin.TRPD_SCHDGRPS_SCHOOLS tss组中选择*,由tss.School_代码计算*>1是,如果不能在WHERE之前更改数据,则不能使用别名。很高兴它对你有用!