我在SQL Server 2008中工作。我有2个查询。第一个是:
SELECT
col1,
col2
FROM tableA
此查询的典型结果集是:
col1 col2
facilityA 10
facilityB 20
第二个是:
SELECT
colx,
COUNT(*) AS 'Totals'
FROM tableB
GROUP BY colx
此查询的典型结果集是:
colx Totals
facilityA 10
facilityB 50
我想返回第一个结果集中的所有记录,其中第二个结果集中col2和Totals之间的值不同,col1和colx之间的对应值。例如,给定的示例应该返回:
col1 col2
facilityB 20
我如何实现这一目标?
答案 0 :(得分:1)
听起来您想使用EXCEPT clause。这将逐列比较每一行,如果两个数据集之间存在相同的行,则将其排除:
SELECT col1, col2
FROM tableA
EXCEPT
SELECT colx, COUNT(*) AS 'Totals'
FROM tableB
GROUP BY colx