很难的sql查询语句(20分)

  • 主题发起人 主题发起人 ForeverYoung
  • 开始时间 开始时间
F

ForeverYoung

Unregistered / Unconfirmed
GUEST, unregistred user!
原始表的数据
地区 日期 收入
01010101 2006.01.01 10
01010101 2006.01.01 10
01010102 2006.01.01 20
01010102 2006.01.01 20
01010102 2006.01.01 20
01010103 2006.01.02 30
01010201 2006.01.01 20
01010202 2006.01.01 20
01010202 2006.01.02 10
01010301 2006.01.03 10

查询以后变成
地区 1号 2号 3号 业绩
01010101 20 0 0 20
01010102 60 0 0 60
01010103 0 30 0 30
小计 80 30 0 110
01010201 20 0 0 20
01010202 20 10 0 30
小计 40 10 0 50
01010301 0 0 10 10
小计 0 0 10 10
总计 120 40 10 170
 
行变列啊,是很麻烦,用临时表吧。最多31天,还算可以~[:D]
 
做不出来啊:就请高手们帮帮忙吧!
 
利用外關聯的方式實現吧。
例如:
1、求出地區的個數
2、分組地區在這個時間段裡匯總數
3、匯總每天的總數
4、然後利用外觀聯的方式來實現就可以了。
LEFT JOIN.
 
你用报表控件很好实现,方法也就不用讲了吧
010101,010102,010103分另为查询结果,你查询后的数据不也是为了看,还者打印,
 
to :delphisuccess,你帮我写一下具体的查询语句,可以吗?小弟的sql学的实在是太菜了
谢谢高手们的关心
 
to 爱不到要偷:要用哪个报表控件?
 
难道真的没有人会做吗?DFW的高手们,帮帮忙,急
 
做过类似的一个统计,比这个还复杂一些的。用CASE语句+WITH ROLLUP 归类汇总后 再在客户端数据集上处理一下数据 就能得到这样的结果[:)]
 
两年前我们当时的项目经理教我写过类似的查询语句,可惜我两年都没写过什么SQL,忘记了...记忆力衰退[:(]

继续求助吧,肯定会有高手的.....
 
急死了,等待高手的出现
 
大致为
select CASE WHEN (GROUPING(substring(地区,1,6))=1) THEN '汇总' ELSE ISNULL(substring(地区,1,6),'') END as 区域,CASE WHEN (GROUPING(地区)=1) THEN '合计' ELSE ISNULL(地区,'') END as 地区
,substring(地区,1,6)as 区域,地区,1号=sum(when case DATEPART(day,日期)=1 then 收入 else 0 end),
2号=sum(when case DATEPART(day,日期)=2 then 收入 else 0 end),... ...,sum(收入) as 业绩
from table where 日期>=2006.01.01 and 日期<=2006.01.31 group by substring(地区,1,6),地区 WITH ROLLUP

你编译一下 然后客户端数据集上在删除不要的项目 就是的了[:)]
 
to xinjinren:我试不出来啊,你在帮我写清楚一点好吗??非常的感谢
 
又是你啊,把我的语句改一下不就行了吗:
select 地区,[1号],[2号],[3号],业绩
from (select case when 地区 is null then 1 else 0 end ord1,
地区 ord2,
case when id is null then 1 else 0 end ord3,
case when 地区 is null then '合计'
when id is null then '小计' else id end 地区,
sum([1号]) [1号],sum([2号]) [2号],sum([3号]) [3号],sum(业绩) 业绩
from (select Left(地区,6) 地区,地区 id,
case when 日期='2006.01.01' then 收入 else 0 end [1号],
case when 日期='2006.01.02' then 收入 else 0 end [2号],
case when 日期='2006.01.03' then 收入 else 0 end [3号],

收入 [业绩]
from 原始表
)T1 group by 地区,ID with rollup
)T2
order by ord1,ord2,ord3
 
我正要找你,都找不到,做天那个我在另一张表运行了,结果数据有的是错误的
 
我在试一试你现在的这个
先谢谢你了TYZhang
 
to TYZhang 跟你说实话在我贴出来的这张表都没有错误,但是我在另一张表运行就出错啊
另一张表的统计结果总是出错
 
什么样的错误,可否将另一张表的数据导出传给我,我看看先。QQ510175770
 
加了你了,还没有通过验证,你现在在线吗?
 
是否已弄出?
 
后退
顶部