SQL Server中2个表的公共记录

时间:2011-10-20 12:54:38

标签: sql sql-server

我有2张桌子。这两个表都包含两列:idamt。 表1包含以下数据:

id, amt
1,  500;
2,  2000;
4,  1000.

表2包含:

id, amt
1,  100;
1,  100;
1,  100;
1,  100;
1,  100;
2,  250;
3,  300;
4,  1000;

现在我的要求是获取表中常见id和常用amt的记录。但是这里面临的挑战是,表1中都提供了id 1。但是表2中的总和(amt)id为id =表1中的id为1,我需要将此记录拉为常用记录。请帮帮我。感谢。

3 个答案:

答案 0 :(得分:4)

SELECT id, amt
FROM Table1
INTERSECT
SELECT id, SUM(amt)
FROM Table2
GROUP BY id

答案 1 :(得分:3)

类似的东西:

SELECT *
FROM table1 
JOIN (SELECT id, SUM(amt) as amt FROM table2 GROUP BY id) t2
ON t1.id = t2.id AND t1.amt=t2.amt

答案 2 :(得分:1)

试试这个:

WITH T2_CTE (id, amt)
AS
(
    SELECT id, SUM(amt)
    FROM table2
    GROUP BY id
)

SELECT t1.id, t1.amt
FROM table1 t1, T2_CTE
WHERE t1.id = T2_CTE.id AND t2.amt = T2_CTE.amt