##################最后一点分了 求2个多表查询的问题##############

LWWL 2005-04-27 11:27:02
table1
id 日期 钢种 牌号 轧废 冷条 检验量 合格率
1 2001.01.01 aa ab 2 3 50 80
2 2001.01.01 bb ba 3 4 60 60
3 2001.02.01 cc ca 5 5 70 70

table2
id 日期 钢种 牌号 轧废 冷条 折叠 检验量 合格率
1 2001.01.01 aa ab 2 3 4 80 30
2 2001.02.01 bbb bb 3 4 5 80 40
3 2001.03.01 ccc cc 5 5 3 70 50

table3
id 日期 钢种 牌号 轧废 拉丝 检验量 合格率
1 2001.01.01 aa ab 2 3 50 50
2 2001.01.01 bb ba 3 4 30 90
3 2001.02.01 cc ca 5 5 70 30
问题1:
按日期查询,按钢种,牌号分组 统计检验量 和合格率 (例如查询全部)
钢种 牌号 合计检验量 合计合格率 t1检验量 t1合格率 t2检验量 t2合格率 t3检验量 t3合格率
aa ab 190 50 50 80 80 30 50 40
bb ba 90 75 60 60 30 90
bbb bb 80 40 80 40
cc ca 70 70 70 70
总计 430 58.75 180 72.5 120 30 80 65
(合计检验量=t1检验量+t2检验量+t3检验量 总计检验量=合计检验量之和
合计合格率和总计合格率=N个合格率相加/N)

问题2
合计 合计 轧废 冷条 折叠 拉丝
table1 22 10 12
table2 35 10 12 13
table3 22 10 12
总计 79 30 24 13 12

拜托各位大侠了 小弟赶任务 交不了就完蛋了
...全文
142 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
子陌红尘 2005-04-27
  • 打赏
  • 举报
回复
日期条件自己加上即可。
子陌红尘 2005-04-27
  • 打赏
  • 举报
回复
2、

select
tab = isnull(tab,'合计'),
合计 = sum(isnull(轧废,0)+isnull(冷条,0)+isnull(折叠,0)+isnull(拉丝,0)),
轧废 = sum(轧废),
冷条 = sum(冷条),
折叠 = sum(折叠),
拉丝 = sum(拉丝)
from
(select 'table1' as tab,日期,钢种,牌号,轧废,冷条,NULL as 折叠,NULL as 拉丝,检验量,合格率 from table1
union all
select 'table2' as tab,日期,钢种,牌号,轧废,冷条,折叠,NULL as 拉丝,检验量,合格率 from table2
union all
select 'table3' as tab,日期,钢种,牌号,轧废,NULL as 冷条,NULL as 折叠,拉丝,检验量,合格率 from table3) a
group by
tab
with rollup
子陌红尘 2005-04-27
  • 打赏
  • 举报
回复
1、

select
钢种 = isnull(钢种,'合计'),
牌号,
合计检验量,
合计合格率,
t1检验量,
t1合格率,
t2检验量,
t2合格率,
t3检验量,
t3合格率
from
(select
a.钢种,
a.牌号,
合计检验量 = sum(a.检验量),
合计合格率 = avg(a.合格率),
t1检验量 = sum(case a.tab when 1 then a.检验量 end),
t1合格率 = avg(case a.tab when 1 then a.合格率 end),
t2检验量 = sum(case a.tab when 2 then a.检验量 end),
t2合格率 = avg(case a.tab when 2 then a.合格率 end),
t3检验量 = sum(case a.tab when 3 then a.检验量 end),
t3合格率 = avg(case a.tab when 3 then a.合格率 end),
ta = GROUPING(a.钢种) ,
tb = GROUPING(a.牌号)
from
(select 1 as tab,日期,钢种,牌号,轧废,冷条,NULL as 折叠,NULL as 拉丝,检验量,合格率 from table1
union all
select 2 as tab,日期,钢种,牌号,轧废,冷条,折叠,NULL as 拉丝,检验量,合格率 from table2
union all
select 3 as tab,日期,钢种,牌号,轧废,NULL as 冷条,NULL as 折叠,拉丝,检验量,合格率 from table3) a
group by
a.钢种,a.牌号
with rollup) b
where
(ta=0 and tb=0) or (ta=1 and tb=1)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧