sql语句高手请进

来源:百度知道 编辑:UC知道 时间:2024/06/27 22:05:41
表1 表2
日期 金额 日期 金额
20080808 50 20080805 60
20080809 50 20080808 60
20080809 50 20080810 60
20080810 50 20080810 60
20080810 50 20080812 60
20080810 50 20080815 60

公式:表1每天每条记录取2块做为奖金;表2每天所有金额的5%做为提成。

查询结果:

日期 奖金 提成
20080805 3
20080808 2 3
20080809 4
20080810 6 6
20080812 3
20080815 3

用一SQL语句实现
其中的2快是2块钱的意思,都是金额的意思!有没有谁能实际能调试出来的呀?

请用t1标示表一,t2标示表2,日期用date1标示,金额用money标示

回答正确的重赏

select 日期=isnull(a.日期,b.日期),奖金=isnull(a.奖金,0),提成=isnull(b.提成,0) from
(select 日期,奖金=count(1)*2 from t1 group by 日期) a
full join
(select 日期,提成=sum(金额)*0.05 from t2 group by 日期) b
on a.日期=b.日期

--说明:先将T1按日期汇总行数并乘以2。别名取a,
--再将T2按日期汇总金额乘以5%.别名取B.
然后将A与B全联接。

select 日期, sum(jj) jiangjin, sum(tc) ticheng
from (select 日期, count(*) * 2 jj, 0 tc
from 表1
group by 日期
union all
select 日期, 0 jj, sum(金额) * 0.05 tc from 表2 group by 日期)
group by 日期

SELECT 日期, SUM(奖金) AS 奖金, SUM(提成) AS 提成
FROM ((SELECT 日期, COUNT(日期) * 2 AS 奖金, 0 AS 提成
FROM t1
GROUP BY 日期)
UNION
(SELECT 日期, 0 AS 奖金, SUM(金额 * 0.05) AS 提成
FROM t2
GROUP BY 日期)) t3
GROUP BY 日期

什么意思哦, 奖金不是只有2块吗?8月5日的奖金怎么有3块。

题意不明。。
A、B两表的数据都插入到一张临时表?还是各自显示各自的?
CREATE TABLE #tempmat(
日期 datetime not null,
A表金额 int default 2,
B表金额 int
) ;