SQL Server 在单个查询中对多个表求和

标签 sql sql-server t-sql

这里是详细信息

表1

rec_id,    rec_amount,       rec_date

1            1500             1/1/2011  
2            4500             1/1/2011  
3            500             1/1/2011  
4            15000             1/1/2011  
5            7500             1/1/2011  

表2

vouc_id       vouc_amount        pay_date
1             15000              1/1/2011
2              750.50            1/1/2011
3              560                1/1/2011

表3

don_id      d_amount           d_date
1           1500                1/1/2011
2             2000              1/1/2011

我需要sum(rec_amount) from tbl1sum(vouc_amount) from tbl2sum(d_amount) from tbl3在单个查询中where date = 1/1/2011 。有谁可以帮助我吗?

最佳答案

在表之间使用 union all 并在此基础上进行 SUM

示例

SELECT SUM(TheAmount)
FROM(
SELECT rec_amount AS TheAmount
FROM tbl1
WHERE  rec_date = '20110101'
UNION ALL
SELECT vouc_amount        
FROM tbl2
WHERE  pay_date = '20110101'
UNION ALL
SELECT d_amount           
FROM tbl3
WHERE  d_date = '20110101') x

或彼此相邻

SELECT SUM(rec_amount) AS tbl1Amount,(SELECT SUM(vouc_amount)   
FROM tbl2
WHERE  pay_date = '20110101') AS tbl2Amount ,(SELECT SUM(d_amount)          
FROM tbl3
WHERE  d_date = '20110101')  AS tbl3Amount  
FROM tbl1
WHERE  rec_date = '20110101'

关于SQL Server 在单个查询中对多个表求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5106582/

相关文章:

sql - LEFT JOIN 具有多个 AND 条件的两个表

sql - 'AS'在SQL中是什么意思?

sql - 在 MS SQL 中搜索带有字母 ü 的单词

sql - 将 LIMIT 和 OFFSET 应用于 MS SQL Server 2008 查询

sql - 对 SQL 层次结构数据类型中的节点重新排序

SQL 查询限制具有不同值的行数

mysql - SQL/自连接/下属数量

sql - 使用日期函数获取仅小于特定日期的日期

SQL查询按附近时间戳分组

sql - 复制,将大量行插入表中