SQL服务器:比较行

时间:2009-07-20 23:21:10

标签: sql sql-server sql-server-2005

我需要一个可以执行以下操作的查询。 我有一个有2列的表

ID Values
 1  1
 1  2
 1  3
 1  4
 2  2
 2  5
 2  6

如果您看到ID 1我有1,2,3和4作为值,对于ID 2我有2,5和6。

我想编写一个返回以下内容的查询

1( - ) 4( - ) 5(+) 6(+)

删除

平均值1和4,并通过比较两个ID来添加5和6。

有可能吗?请让我知道

由于

2 个答案:

答案 0 :(得分:0)

类似的东西:

(
SELECT T.Value FROM dbo.Table T WHERE T.ID = 1
EXCEPT
SELECT T.Value FROM dbo.Table T WHERE T.ID = 2
)
UNION
(
SELECT T.Value FROM dbo.Table T WHERE T.ID = 2
EXCEPT
SELECT T.Value FROM dbo.Table T WHERE T.ID = 1
)

这将获得与1相关但不是2和2但不是1的值的列表。您可以轻松地将这些子查询中的一个值乘以-1来区分它们,或者将它们作为两个单独运行查询。

答案 1 :(得分:0)

这将给你1& 4:

select a.values
from my_table a
where not exists (
select * from my_table b where b.values = a.values and b.ID = 2)
and a.ID = 1

这将给你5& 6:

select a.values
from my_table a
where not exists (
select * from my_table b where b.values = a.values and b.ID = 1)
and a.ID = 2