加入SQL Server的聚合子查询

时间:2018-02-21 17:11:15

标签: sql sql-server join

我正在尝试比较2个表的值以确保它们匹配。在一个表中,一些行被拆分成较小的行,因此需要对它们进行分组,然后才能在另一个表中将它们的相等匹配连接起来。我知道这不是最好的设计,但它是我得到的。

这是我目前的逻辑

SELECT *  
FROM Table2 T2
FULL JOIN
    (SELECT 
         MIN(No1) AS [No1],
         MIN(No2) AS [No2],
         SUM(Amount) AS [Amount]
     FROM 
         Table1
     GROUP BY 
         No1) T1 ON T1.No1 = T2.No1 AND T1.No2 = T2.No2

结果:

| No1 | No2 | Amount |    No1 |    No2 | Amount |
+-----+-----+--------+--------+--------+--------+
| 111 | 222 |     20 |    111 |    222 |     20 |
| 222 | 444 |     50 |    222 |    444 |     50 |
| 333 | 222 |     10 |    333 |    222 |     30 |
| 333 | 444 |     20 | (null) | (null) | (null) |

我不明白右边333-222的数量是多少是30,当我预计它是10.我在这里想念的是什么?感谢

SQL FIDDLE - http://sqlfiddle.com/#!18/e6e4c/4

2 个答案:

答案 0 :(得分:2)

我不会感到困惑。你有('333', '222' , 10), ('333', '444' , 20);

col1

col1汇总时,总和为“30”。这就是结果集中的“30”。

也许您打算让子查询按col2private void keyboardKey_Click(object sender, RoutedEventArgs e){ var key = sender as Button; textbox.Text += key.Content; } 聚合。

答案 1 :(得分:1)

好像你想要按两列分组:GROUP BY No1, No2