日期:2014-05-18 浏览次数:20784 次
;with cte as ( select 科目编号,科目名称 ,pm=row_number()over(partition by 科目名称 order by getdate()) ) select * from cte where pm=1
------解决方案--------------------
首先纠正LZ的一些设计思想吧,不要为了SSIS 而SSIS,SSIS 只是个工具箱而已,里面的组件就像工具,这里面有个最基本的工具叫 Execute SQL, 可以执行绝大多数的SQL 语句,不一定非要用数据流任务。
------解决方案--------------------
不知道楼主的数据库中的表是什么样具体的形式,还有不知道楼主最终的结果要不要显示科目编号
1:若科目编号,科目名称,和对应的费用数据在一张表里面,就不要用
select 取年(时间),科目编号,科目名称,sum(费用) from table group by 取年(时间) 的格式
直接用 select 取年(时间),科目名称,sum(费用) from table group by 取年(时间)
因为科目编号是不准的,直接根据科目名称来取数据,然后如果想要显示科目编号,就直接可以给每个
科目名称设一个编号…… (估计这种情况应该不会存在)
2:一般情况下,我估计楼主的表数据为
数据表t1 : 时间,科目编号,费用,……
科目对应表t2: 时间,科目编号,科目名称……
这样的话一种做法是
select 取年(t1.时间),t2.科目名称,sum(t1.费用)from t1,t2
where 格式(t1.时间)=t2.时间 and t1.科目编号=t2.科目编号 group by 取年(t1.时间)
另一种办法就是在两个表中分别加一个字段,使用联合键来对应,如果只是想得到最终的费用表,不建议用 这种办法,这是一种我研究出的一种解决缓慢变化维的办法(并已实际证明正确)
3:打了不少字了,希望对楼主有所帮助,有什么问题可以加我互相交流学习!!!
------解决方案--------------------
不知道楼主的数据库中的表是什么样具体的形式,还有不知道楼主最终的结果要不要显示科目编号
1:若科目编号,科目名称,和对应的费用数据在一张表里面,就不要用
select 取年(时间),科目编号,科目名称,sum(费用) from table group by 取年(时间)
------解决方案--------------------
SSIS中有很多可以写SQL语句的组件,你可以在源数据那里选择SQL查询,然后写脚本取数据。