首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请教一个查询问题 [已结贴,结贴人:iamme81]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iamme81
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-26 17:16:42 楼主
    现有表
    create table newsale
    (city varchar(4),
    date datetime,
    money money,
    valid char(1)
    )
    其中表valid用字符T和F来区分有效和无效交易

    现要求设计一个查询取出每年的每个月发生的有效交易和无效交易的笔数和总额,要求格式如下

    年/月 有效交易统计,无效交易统计,有效交易笔数,无效交易笔数
    2005/09  1282.51        0          4            0
    .
    .
    .
    .
    .
    .

    我写的查询结构如下,
    select  convert(char(4),datepart(yy,date))+'/'+convert(char(2),datepart(mm,date)) as [年/月],
    sum(case valid when 'T' then money else 0 end) as 有效消费统计,
    sum(case valid when 'F' then money else 0 end) as 无效消费统计,
    sum(case valid when 'T' then 1 else 0 end) as 有效消费笔数,
    sum(case valid when 'F' then 1 else 0 end) as 无效消费笔数
    from  newsale
    group by date
    但确显示出

    2005/9 128.916         0.00 1 0
    2005/9 270.4423 0.00 1 0
    2005/9 658.8989 0.00 1 0
    2005/9 224.2761 0.00 1 0
    .
    .
    .
    不知这该如何处理


    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Limpire
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      2

    发表于:2008-05-26 17:18:471楼 得分:10
    select  convert(char(4),datepart(yy,date))+'/'+convert(char(2),datepart(mm,date)) as [年/月],
    sum(case valid when 'T' then money else 0 end) as 有效消费统计,
    sum(case valid when 'F' then money else 0 end) as 无效消费统计,
    sum(case valid when 'T' then 1 else 0 end) as 有效消费笔数,
    sum(case valid when 'F' then 1 else 0 end) as 无效消费笔数
    from  newsale
    group by convert(char(4),datepart(yy,date))+'/'+convert(char(2),datepart(mm,date)) as [年/月]
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Limpire
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      2

    发表于:2008-05-26 17:20:172楼 得分:0
    SQL code
    select convert(char(7),getdate(),111) as [年/月], sum(case valid when 'T' then money else 0 end) as 有效消费统计, sum(case valid when 'F' then money else 0 end) as 无效消费统计, sum(case valid when 'T' then 1 else 0 end) as 有效消费笔数, sum(case valid when 'F' then 1 else 0 end) as 无效消费笔数 from newsale group by convert(char(7),getdate(),111)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lff642
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 17:21:223楼 得分:5
    SQL code
    --try select convert(varchar(7),date,111)as [年/月],,sum(case valid when 'T' then money else 0 end) as 有效消费统计, sum(case valid when 'F' then money else 0 end) as 无效消费统计, sum(case valid when 'T' then 1 else 0 end) as 有效消费笔数, sum(case valid when 'F' then 1 else 0 end) as 无效消费笔数 from newsale group by convert(varchar(7),date,111)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lff642
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 17:21:584楼 得分:0
    你们太快了.抢分不容易.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Limpire
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      2

    发表于:2008-05-26 17:22:175楼 得分:0
    SQL code
    select convert(char(7),date,111) as [年/月], sum(case valid when 'T' then money else 0 end) as 有效消费统计, sum(case valid when 'F' then money else 0 end) as 无效消费统计, sum(case valid when 'T' then 1 else 0 end) as 有效消费笔数, sum(case valid when 'F' then 1 else 0 end) as 无效消费笔数 from newsale group by convert(char(7),date,111)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yms_wangxm
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 17:23:046楼 得分:0
      正解。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cson_cson
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-26 17:23:277楼 得分:5
    select  convert(char(4),datepart(yy,date))+'/'+convert(char(2),datepart(mm,date)) as [年/月],
    sum(case valid when 'T' then money else 0 end) as 有效消费统计,
    sum(case valid when 'F' then money else 0 end) as 无效消费统计,
    sum(case valid when 'T' then 1 else 0 end) as 有效消费笔数,
    sum(case valid when 'F' then 1 else 0 end) as 无效消费笔数
    from  newsale
    group by convert(char(4),datepart(yy,date))+'/'+convert(char(2),datepart(mm,date))
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iamme81
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-27 12:26:278楼 得分:0
    引用 1 楼 Limpire 的回复:
    select  convert(char(4),datepart(yy,date))+'/'+convert(char(2),datepart(mm,date)) as [年/月],
    sum(case valid when 'T' then money else 0 end) as 有效消费统计,
    sum(case valid when 'F' then money else 0 end) as 无效消费统计,
    sum(case valid when 'T' then 1 else 0 end) as 有效消费笔数,
    sum(case valid when 'F' then 1 else 0 end) as 无效消费笔数
    from  newsale
    group by convert(char(4),datepart(yy,date))+'/'+convert(char(2),datepart(mm,date)) as [年/月]

    我还以为GROUP中只能写字段呢?原来是这个as有问题,啊!我又糊涂了一回

    结帐吧!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved