找回密码
 立即注册
搜索
查看: 228|回复: 2

sql server问题求教

[复制链接]

708

主题

2547

回帖

3066

积分

论坛元老

积分
3066
发表于 2003-1-19 02:45:21 | 显示全部楼层 |阅读模式
sql server问题求教

环境
sql server7.0
winnt4.0 + pk6

有一数据库YYY,其中有一表,表名卡片,有下列字段:
卡号 (整型)        
余额  (数值型)
签发日期  (日期时间型)

另有一表,流水帐,有下列字段:
序列号  (整型)
卡号  (整型)
时间 (日期时间型)   
服务项目 (整型)
金额 (数值型)            


另有一表,交费,有下列字段:
卡号  (整型)
充值 (数值型)
时间  (日期时间型)

问题是:
1、要统计所有2002年4月27日以前(含4月27日)每张卡的累计充值  (CZ1)
2、要统计问题1中所有的卡,在2002年4月28日以后(含4月28日),到系统当前时间,每张卡的累计充值(CZ2)
3、要统计问题1中所有的卡,在2002年4月28日以后(含4月28日),到系统当前时间,每张卡的累计消费(XF2)
4、将以上结果写入另一个库YYY1的表RES中
表RES的字段有
卡号
CZ1
CZ2
XF2
(库YYY1和表RES已经存在,仅仅有表结构,但无任何数据)
一点解释:
一张卡的累计充值等于,这张卡在表交费中的所有充值之和
一张卡的累计消费等于,这张卡在表流水帐中的所有金额之和

327

主题

3264

回帖

3641

积分

荣誉版主

积分
3641
发表于 2003-1-19 15:51:12 | 显示全部楼层
刚刚在浮云回答了,呵呵,再贴一遍

SQL SERVER很长时间没用了,呵呵,随便写写,没有经过测试,可能有问题,仅做参考。

  1.   交费
  2.   SELECT COUNT(充值) AS CZ1 FROM 交费 WHERE 时间 <= 2002-4-27
  3.    交费
  4.   SELECT COUNT(充值) AS CZ2 FROM 交费 WHERE 时间 BETWEEN 2002-4-28 AND GETDATE()
  5.    流水帐
  6.   SELECT COUNT(金额) AS XF2 FROM 流水帐 WHERE 时间 BETWEEN 2002-4-28 AND GETDATE()

  7.    INSERT INTO YYY1.RES(CZ1, CZ2, XF2) SELECT
  8.    (SELECT COUNT(充值) AS CZ1 FROM 交费 WHERE 时间 <= 2002-4-27),
  9.    (SELECT COUNT(充值) AS CZ2 FROM 交费 WHERE 时间 BETWEEN 2002-4-28 AND GETDATE()),
  10.    (SELECT COUNT(金额) AS XF2 FROM 流水帐 WHERE 时间 BETWEEN 2002-4-28 AND GETDATE())  
复制代码


写完SQL语句,我发现问题2和问题3的"要统计问题1中所有的卡"有点多余,因为原本统计的就是COUNT,觉得有点问题。
回复

使用道具 举报

708

主题

2547

回帖

3066

积分

论坛元老

积分
3066
 楼主| 发表于 2003-1-19 17:46:41 | 显示全部楼层
“要统计问题1中所有的卡”的意思是说所有2002年4月27日以前有充值记录的卡,并不是所有的卡,问题2、3是针对这些卡提出的。

谢谢厨师
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|海浩社区

GMT+8, 2025-9-19 23:35 , Processed in 0.088973 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表