sql server查询多表记录,后面一行增加合计?

比如vip表与vipcom表里的数据,查询二表数据加上合计。

可以使用 UNION ALL 和 GROUP BY 语句实现查询多表记录并在后面一行增加合计。以下是一个示例 SQL 查询语句:
SELECT t1.id, t1.name, t1.amount
FROM table1 t1
UNION ALL
SELECT t2.id, t2.name, t2.amount
FROM table2 t2
GROUP BY t2.id, t2.name, t2.amount
WITH ROLLUP;
在此查询中,我们首先使用 UNION ALL 将两个表的记录合并到一起。然后,使用 GROUP BY 子句对合并后的结果进行分组,并使用 WITH ROLLUP 关键字在最后一行添加合计值。
请注意,您需要根据您的实际数据结构和需求来修改此查询,以便正确地检索所需的数据。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-04-23
多表分组汇总,并增加合计行,使用 Group by rollup 实现
select case when t1.id is null then '合计' else t1.id end id,
case when t1.id is null then '' else max(t1.name) end name,
sum(isnull(sale1,0)) sale1,sum(isnull(sale2,0)) sale2,
sum(isnull(sale3,0)) sale3,sum(isnull(sale4,0)) sale4
from vip t1
left join vipcom t2 on t1.id=t2.id
group by rollup(t1.id)追问

你好!执行如下提示
消息 209,级别 16,状态 1,第 5 行
列名 'sale1' 不明确。
消息 209,级别 16,状态 1,第 5 行
列名 'sale2' 不明确。
消息 209,级别 16,状态 1,第 6 行
列名 'sale3' 不明确。
消息 209,级别 16,状态 1,第 6 行
列名 'sale4' 不明确。

追答

那应该是VIP、VIPCOM 2个表都有 sale1~sale4列,在列名前加表名即可,角本是根据问题截图写的,注意根据实际情况修改
select case when t1.id is null then '合计' else t1.id end id,
case when t1.id is null then '' else max(t1.name) end name,
sum(isnull(t1.sale1,0)) sale1,sum(isnull(t1.sale2,0)) sale2,
sum(isnull(t2.sale3,0)) sale3,sum(isnull(t2.sale4,0)) sale4
from vip t1
left join vipcom t2 on t1.id=t2.id
group by rollup(t1.id)