跨表建交叉表 按列条件日期汇总

lvminghua001 2011-01-05 04:02:44
如果金额和月份不是同一个表里的呢?我的碰到了这么个情况:
表一结构:
日期 产量 单位
2010-9-1 100 一部
2010-9-2 122 二部
2010-9-3 133 三部
2010-9-4 144 一部
……
而表二的结构为
日期时间 事故数量 单位
2010-9-1 00:1:12 1 一部
2010-9-1 05:4:43 1 二部
2010-9-2 07:2:43 1 三部
2010-9-2 03:6:43 1 一部
……
两个表的记录都有几千条
我想做一个交叉表,以表一的日期为行(按月显示)单位为列
汇总里包含事故数量和产量的统计
因为表二里是具体到时间的,不知道该怎么办了
新手,愁了一个星期了,另,用的是vb.net

希望高手不吝赐教
...全文
129 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿双2009 2011-01-06
  • 打赏
  • 举报
回复
我这边是先把数据处理好,在把处理好的数据推送给水晶报表,而报表只是以普通单表的形式展现数据即可。
相对于在报表内部处理数据,效率更高。

具体怎么用“推模式”,参考:http://topic.csdn.net/u/20090626/18/0e7d0af0-2555-479d-9cb5-84175787f2cd.html?2587
lvminghua001 2011-01-06
  • 打赏
  • 举报
回复
不好意思哈,补充一下,我想从水晶报表里实现这个功能,用的是vs2008自带的。能不能介绍下这方面的详细方法啊?两个表里的字段其实挺多的,而且有一点就是两个表之间关联性有点麻烦,事故表里的时间具体到了分钟,产量表里只到天,而且有的部门只有有事故没产量……简单的拖表里的字段根本没法建交叉表……确实有点急,拜托拜托了!
lvminghua001 2011-01-06
  • 打赏
  • 举报
回复
弱弱的问一句:sql查询的代码从哪里写啊?……
阿双2009 2011-01-05
  • 打赏
  • 举报
回复

--> 测试数据:#tb1
if object_id('tempdb.dbo.#tb1') is not null drop table #tb1
create table #tb1
(
日期 datetime ,
产量 int ,
单位 varchar(50)
)
insert into #tb1
select '2010-9-1',100,'一部' union all
select '2010-9-2',122,'二部' union all
select '2010-9-3',133,'三部' union all
select '2010-9-4',144,'一部'

--> 测试数据:#tb2
if object_id('tempdb.dbo.#tb2') is not null drop table #tb2
create table #tb2
(
日期时间 datetime ,
事故数量 int ,
单位 varchar(50)
)
insert into #tb2
select '2010-9-1 00:1:12',1,'一部' union all
select '2010-9-1 05:4:43',1,'二部' union all
select '2010-9-2 07:2:43',1,'三部' union all
select '2010-9-2 03:6:43',1,'一部'

--> SQL查询
select T1.月份,一部产量,一部事故数量,二部产量,二部事故数量,三部产量,三部事故数量
from
(
select Month(日期) as 月份,
sum(case 单位 when '一部' then 产量 else 0 end) 一部产量,
sum(case 单位 when '二部' then 产量 else 0 end) 二部产量,
sum(case 单位 when '三部' then 产量 else 0 end) 三部产量
from #tb1
group by Month(日期)) T1,
(
select Month(日期时间) as 月份,
sum(case 单位 when '一部' then 事故数量 else 0 end) 一部事故数量,
sum(case 单位 when '二部' then 事故数量 else 0 end) 二部事故数量,
sum(case 单位 when '三部' then 事故数量 else 0 end) 三部事故数量
from #tb2
group by Month(日期时间)) T2
where T1.月份=T2.月份

--> 结果
月份 一部产量 一部事故数量 二部产量 二部事故数量 三部产量 三部事故数量
----------- ----------- ----------- ----------- ----------- ----------- -----------
9 244 2 122 1 133 1

(1 行受影响)

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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