CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

sql语句问题

楼主norlights(烟火)2003-08-03 09:31:11 在 MS-SQL Server / 基础类 提问

有表kk  
  日期                         name         num  
  2003-01-01             w1             1  
  2003-01-02             w2             1  
  2003-01-03             w3             1  
  咋样用sql语句查出这样的结果(最好用case实现)  
  号数         w1       w2     w3      
    1             1  
    2                       1  
    3                               1  
  问题点数:0、回复次数:7Top

1 楼CSDNM(决定不当CSDN经理了)回复于 2003-08-03 09:42:41 得分 0

SELECT   DATEPART(DAY,日期)   AS   号数,  
      SUM(CASE   WHEN   NAME='w1'   THEN   num   ELSE   0   END   )   AS   W1,  
      SUM(CASE   WHEN   NAME='w2'   THEN   num   ELSE   0   END   )   AS   W2,  
      SUM(CASE   WHEN   NAME='w3'   THEN   num   ELSE   0   END   )   AS   W3  
  FROM   KK  
  GROUP   BY     DATEPART(DAY,日期)  
   
  Top

2 楼norlights(烟火)回复于 2003-08-03 09:50:36 得分 0

我   表里面不是就   三行呀有很   多行Top

3 楼pengdali()回复于 2003-08-03 10:31:19 得分 0

declare   @sql   varchar(8000)  
  set   @sql   =   'select   day(日期)'  
  select   @sql   =   @sql   +   ',case   name   when   '''+name+'''   then   num   end   ['+name+']'  
      from   (select   distinct   name   from   kk)   as   a  
  select   @sql   =   @sql+'   from   kk'  
   
  exec(@sql)  
  go  
  Top

4 楼pengdali()回复于 2003-08-03 10:33:45 得分 0

declare   @sql   varchar(8000)  
  set   @sql   =   'select   day(日期)   号数'  
  select   @sql   =   @sql   +   ',sum(case   name   when   '''+name+'''   then   num   end)   ['+name+']'  
      from   (select   distinct   name   from   kk)   a  
  select   @sql   =   @sql+'   from   kk   group   by   day(日期)'  
   
  exec(@sql)  
  go  
   
  Top

5 楼qianguob(不懂编程)回复于 2003-08-03 13:16:24 得分 0

对了,这样肯定可以了。Top

6 楼CrazyFor(冬眠的鼹鼠)回复于 2003-08-03 13:50:58 得分 0

赞同大力的。:)Top

7 楼zjcxc(邹建)回复于 2003-08-03 14:19:28 得分 0

name不固定要用动态生成SQL的方法  
   
   
  declare   @sql   varchar(8000)  
  set   @sql='select   day(日期)   as   号数'  
  select   @sql=@sql+',case   name   when   '''+name+'''   then   num   else   ''''   end   as   '+name  
  from   (select   distince   name   from   kk)   a  
  set   @sql=@sql+'   from   kk   group   by   day(日期)'  
  exec(@sql)Top

相关问题

  • 求SQL语句
  • sql语句。
  • sql语句?
  • sql 语句?
  • 求SQL语句
  • ***求SQL语句***
  • sql语句??
  • sql语句
  • sql语句
  • SQL语句

关键词

  • sql
  • 号数
  • kk
  • 日期
  • day
  • sum
  • then num
  • varchar
  • case
  • else0

得分解答快速导航

  • 帖主:norlights

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo