SQL问题(100分)

  • 主题发起人 主题发起人 jhlz1968
  • 开始时间 开始时间
J

jhlz1968

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个Access表,结构如下:

票号 车号 有效期止
1000001 21100 2008/01/31
1000002 21111 2008/01/31
1000003 21100 2008/03/31
1000004 21100 2008/06/30
1000005 21111 2008/05/31
1000006 22222 2008/01/31
1000007 22222 2008/04/30
...... .... .......

怎样用SQL统计达到如下效果:
车号 1月 2月 3月 4月 5月 6月 ...... 12月
21100 1000001 1000003 1000003 1000004 1000004 1000004
21111 1000002 1000005 1000005 1000005 1000005
22222 1000006 1000007 1000007 1000007
........
 
Access数据库本身具有交叉查询的SQL语句,进入access设计端看看。。。
 
试试这个,我也没测试:
select 车号,
sum(case when 有效期止='2008/01/31' then 票号 end) as 1月,
sum(case when 有效期止='2008/02/29' then 票号 end) as 2月,
sum(case when 有效期止='2008/03/31' then 票号 end) as 3月,
sum(case when 有效期止='2008/04/30' then 票号 end) as 4月,
sum(case when 有效期止='2008/05/31' then 票号 end) as 5月,
sum(case when 有效期止='2008/06/30' then 票号 end) as 6月,
sum(case when 有效期止='2008/07/31' then 票号 end) as 7月,
sum(case when 有效期止='2008/08/31' then 票号 end) as 8月,
sum(case when 有效期止='2008/09/30' then 票号 end) as 9月,
sum(case when 有效期止='2008/10/31' then 票号 end) as 10月,
sum(case when 有效期止='2008/11/30' then 票号 end) as 11月,
sum(case when 有效期止='2008/12/31' then 票号 end) as 12月,
from tablename group by 车号
 
樓上的都不對
 
select M.車號, M1.票號 as 1月, M2.票號 as 2月, M3.票號 as 3月
from TableName M,
TableName as M1,TableName as M2,TableName as M3
where DATEPART ( year , M1.有效日期 ) = 2008 and DATEPART ( month , M1.有效日期 ) = 1
and DATEPART ( year , M2.有效日期 ) = 2008 and DATEPART ( month , M2.有效日期 ) =2
and DATEPART ( year , M3.有效日期 ) = 2008 and DATEPART ( month , M3.有效日期 ) =3
and M.車號 = M1.車號 and M.車號 = M2.車號 and M.車號 = M3.車號

...

其中 detepart函數是SQLserver 中的,access中用什麼函數,我不知道,你自已看看吧
 
Access不支持Case,用iif
 
肯定要用分组函数的
 

Similar threads

I
回复
0
查看
876
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
486
import
I
后退
顶部