统计问题?。。。。。。着急啊。。。

zyl2001 2003-10-09 02:02:48
表A(收入表):
班次:(ClassTime) ,总人数(ManNum),钱数(Dollars),驾驶员ID(Driver)
信息如下:
1230 ,30 ,900 ,1
1230 ,25 ,750 ,2
1400 ,20 ,600 ,1
。。。
表B(班次表):
班次:(ClassTime) ,线路号(LNo)
信息如下:
1230 , 1
1400 , 2
表C(线路表):
线路号:(LNo) ,线路名称(LName)
信息如下:
1,北京
2,济南
。。。
表D(驾驶员表)
驾驶员ID(Driver) , 驾驶员名称(Name)
信息如下
1 ,张三
2 ,李四
。。。
现在想实现如下:
张三 北京 人数 钱数 济南 人数 钱数
...
李四 北京 人数 钱数 济南 人数 钱数
...

应该如何写这个语句(打算用视图做)
有帮忙的朋友吗?
...全文
19 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2003-10-09
  • 打赏
  • 举报
回复
如果线路名称过多,最终导致字符长度超过8000,参考下面贴子的化解方法:
http://expert.csdn.net/Expert/topic/2336/2336166.xml?temp=.2938349
zjcxc 元老 2003-10-09
  • 打赏
  • 举报
回复
如果不只统计北京,济南,用动态生成SQL的方法:

--动态生成SQL语句的方法,适用于不只统计北京济南的情况
declare @sql varchar(8000)
set @sql='select 姓名=c.name'
select @sql=@sql+',['+lname+'人数]=sum(case b.Lname when '''
+lname+''' then a.ManNum else 0 end),['
+lname+'钱数]=sum(case b.Lname when '''
+lname+''' then a.Dollars else 0 end)'
from @表C

exec(@sql+'from 表A a
inner join (select a.ClassTime,b.LName from 表B a inner join 表C b on a.LNo=b.LNo) b
on a.ClassTime=b.ClassTime
inner join 表D c on a.Driver=c.Driver
group by c.name')
zjcxc 元老 2003-10-09
  • 打赏
  • 举报
回复
交叉表,如果站名固定,可以用:

select 姓名=c.name
,北京人数=sum(case b.Lname when '北京' then a.ManNum else 0 end)
,北京钱数=sum(case b.Lname when '北京' then a.Dollars else 0 end)
,济南人数=sum(case b.Lname when '济南' then a.ManNum else 0 end)
,济南钱数=sum(case b.Lname when '济南' then a.Dollars else 0 end)
from 表A a
inner join (select a.ClassTime,b.LName from 表B a inner join 表C b on a.LNo=b.LNo) b
on a.ClassTime=b.ClassTime
inner join 表D c on a.Driver=c.Driver
group by c.name
Wally_wu 2003-10-09
  • 打赏
  • 举报
回复
做不了,只有表D(驾驶员表)和以上的三个表都没有关联
zyl2001 2003-10-09
  • 打赏
  • 举报
回复
不是只统计北京和济南。
txlicenhe 2003-10-09
  • 打赏
  • 举报
回复
楼主只统计北京的和济南的吗?
yelook 2003-10-09
  • 打赏
  • 举报
回复
select d.Name,c.LName,a.ManNum,a.Dollars from a inner join
b on a.ClassTime=b.ClassTime inner join c on b.LNo=c.LNo
inner join d on a.Driver=d.Driver

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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