我正在尝试比较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
答案 0 :(得分:2)
我不会感到困惑。你有('333', '222' , 10),
('333', '444' , 20);
:
col1
按col1
汇总时,总和为“30”。这就是结果集中的“30”。
也许您打算让子查询按col2
和private void keyboardKey_Click(object sender, RoutedEventArgs e){
var key = sender as Button;
textbox.Text += key.Content;
}
聚合。
答案 1 :(得分:1)
好像你想要按两列分组:GROUP BY No1, No2