比较 2 个结果集
Compare 2 result sets
我在 SQL Server 2008 中工作。我有 2 个问题。第一个是:
SELECT
col1,
col2
FROM tableA
这个查询的典型结果集是:
col1 col2
设施A 10
设施 B 20
第二个是:
SELECT
colx,
COUNT(*) AS 'Totals'
FROM tableB
GROUP BY colx
这个查询的典型结果集是:
colx 总计
设施A 10
设施 B 50
我想 return 第一个结果集中的所有记录,其中 col2 和第二个结果集中的 Totals 之间的值不同,对于 col1 和 colx 之间的对应值。例如,给定的例子应该 return:
col1 col2
设施 B 20
如何实现?
听起来您想使用 EXCEPT clause。这将逐列比较每一行,如果两个数据集之间存在相同的行,它将被排除:
SELECT col1, col2
FROM tableA
EXCEPT
SELECT colx, COUNT(*) AS 'Totals'
FROM tableB
GROUP BY colx
我在 SQL Server 2008 中工作。我有 2 个问题。第一个是:
SELECT
col1,
col2
FROM tableA
这个查询的典型结果集是:
col1 col2
设施A 10
设施 B 20
第二个是:
SELECT
colx,
COUNT(*) AS 'Totals'
FROM tableB
GROUP BY colx
这个查询的典型结果集是:
colx 总计
设施A 10
设施 B 50
我想 return 第一个结果集中的所有记录,其中 col2 和第二个结果集中的 Totals 之间的值不同,对于 col1 和 colx 之间的对应值。例如,给定的例子应该 return:
col1 col2
设施 B 20
如何实现?
听起来您想使用 EXCEPT clause。这将逐列比较每一行,如果两个数据集之间存在相同的行,它将被排除:
SELECT col1, col2
FROM tableA
EXCEPT
SELECT colx, COUNT(*) AS 'Totals'
FROM tableB
GROUP BY colx