【发布时间】:2020-04-27 07:52:37
【问题描述】:
我有一个合并 2 个表的查询。表 1 有很多列,并且最终可能会扩展。表 2 也有几列,但我将对其 90% 的列执行聚合函数。表 1 有 300 + 行,表 2 有 84K + 行。
SELECT
t1.*
,t2.c2
,SUM(t2.c3)
,SUM(t2.c4)
FROM
Table1 AS t1
LEFT JOIN Table2 AS t2 ON t1.c10 = t2.c1
GROUP BY
t1.*
,t2.c2
我收到一个错误Incorrect Syntax near '*',它指向包含GROUP BY 语句的行。
我知道SELECT t1.* 在尝试聚合 T2 列之前运行此部分时工作正常,并且按预期工作。
有没有办法快速GROUP BY T1 中的所有列?我知道通常我们只会选择需要的列,但在这种情况下,我需要所有 T1 列。
以前的研究使我只找到使用 1 个表的实例,并且大多数人都希望获取或删除重复值。我希望专门将 T1 的 300 条记录与 T2 的 84K 记录结合起来,而不必在 GROUP BY 部分中命名 T1 中的所有列。
【问题讨论】:
-
你看过这个答案了吗:dba.stackexchange.com/questions/21226/…
-
我没有看过那篇文章。这有助于降低行数,但我仍然在 70K 左右,并且 T1 数据仍在重复。
-
我会推荐GROUPING SETS,但它们不能应用于您的情况,因为您参考了第二个表格的一列。
-
实际上,@wosi 的答案对我有用。我在加入表格时获得 70K 行的原因是因为我需要将它们加入 2 列而不是 1 列。感谢大家的帮助。
标签: sql-server ssms-2016