CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

问个SQL语句

楼主bzlj(bzlj)2003-05-03 12:52:01 在 MS-SQL Server / 疑难问题 提问

表    
  a(部门)                     b(项目)                     c(类别)                     d(金额)  
  111                                     土地                             现金                             100.00  
  111                                     土地                             支票                             200.00  
  111                                     工本                             现金                             100.00  
  用一条语句实现如下结果  
  部门       项目       数量       现金             支票             金额  
  111         土地         2         100.00       200.00       300.00  
  111         工本         1         100.00           0.00       100.00  
  怎么写SQL语句  
  问题点数:100、回复次数:24Top

1 楼caiyunxia(夏才云)回复于 2003-05-03 12:55:07 得分 0

select   a   as   部门,   b   as   项目,coun(*)   as   数量     ,sum(case   when     c='现金'   then   d   else   0   end)   as   现金,sum(case   when     c='支票'   then   d   else   0   end)   as   支票,sum(d)   as   金额  
  from   table   group   by   a,bTop

2 楼new_life(孙正方)回复于 2003-05-03 13:43:20 得分 0

学习  
  countTop

3 楼caiyunxia(夏才云)回复于 2003-05-03 13:44:54 得分 50

select   a   as   部门,   b   as   项目,count(*)   as   数量     ,sum(case   when     c='现金'   then   d   else   0   end)   as   现金,sum(case   when     c='支票'   then   d   else   0   end)   as   支票,sum(d)   as   金额  
  from   table   group   by   a,b  
  对,有点问题  
  COUN错了,是COUNT  
  Top

4 楼pengdali()回复于 2003-05-03 15:00:03 得分 50

declare   @sql   varchar(8000)  
  set   @sql   =   'select   a   部门,b   项目,sum(1)   数量'  
  select   @sql   =   @sql   +   ',sum(case   c   when   '''+c+'''   then   d   else   0   end)   as   ['+c+']'  
      from   (select   distinct   c   from   表)   as   a  
  select   @sql   =   @sql+'   from   表   group   by   a,b'  
   
  exec(@sql)  
  goTop

5 楼bzlj(bzlj)回复于 2003-05-03 15:45:36 得分 0

谢谢大家这么热心!谢谢!!!!!!!!!!!!!!!!  
  非常感谢   caiyunxia(monkey)   兄,你给我短消息的SQL没问题。谢谢!  
  Top

6 楼bzlj(bzlj)回复于 2003-05-03 15:48:10 得分 0

to:pengdali(大力)    
  也谢谢你,不过你都四星了,我就只给你10分,不要介意啊,我的很多问题你都留言解答,  
  谢谢!!!!!Top

7 楼pengdali()回复于 2003-05-03 15:48:14 得分 0

我的你没试吗?  
  哎!又白写了!  
   
  :)Top

8 楼caiyunxia(夏才云)回复于 2003-05-03 15:49:36 得分 0

大力,偷学了你很多Top

9 楼pengdali()回复于 2003-05-03 15:50:14 得分 0

你不给我分都可以但你要试试我写的!  
   
  老大,那里看不懂就说!不要浪费我的写的了~~~~  
   
  :)Top

10 楼bzlj(bzlj)回复于 2003-05-03 15:51:40 得分 0

to::pengdali(大力)  
  呵呵...我记下你的了,你的也对啊Top

11 楼pengdali()回复于 2003-05-03 15:52:24 得分 0

to     caiyunxia(monkey)  
      不要这么说,大家互相学习嘛,论坛的目的是技术的最大化,谈不上"偷学"哈哈哈哈。。  
  你有空还要教教我哟!Top

12 楼bzlj(bzlj)回复于 2003-05-03 15:54:17 得分 0

to::pengdali(大力)  
  你是大哥,我是小弟!  
  我这马上去试试。谢谢  
  Top

13 楼caiyunxia(夏才云)回复于 2003-05-03 15:56:41 得分 0

我希望能教你  
  哈哈  
  到重庆,我请你吃火锅Top

14 楼caiyunxia(夏才云)回复于 2003-05-03 15:57:24 得分 0

大力肯定正确Top

15 楼pengdali()回复于 2003-05-03 16:03:28 得分 0

我说   monkey   改过个中文名吧!你都当爸爸了还monkey   估计你是属猴的!  
   
   
  Top

16 楼bzlj(bzlj)回复于 2003-05-03 16:04:40 得分 0

不对啊!  
  select   @sql   =   @sql   +   ',sum(case   c   when   '''+c+'''   then   d   else   0   end)   as   ['+c+']'  
      from   (select   distinct   c   from   表)   as   a  
  这是一句吗,语法有问题样Top

17 楼pengdali()回复于 2003-05-03 16:07:04 得分 0

create   table   #表(a   varchar(10),b   varchar(100),c   varchar(100),d   money)  
  insert   #表   values('111','土地','现金',100.00)  
  insert   #表   values('111','土地','支票',200.00)  
  insert   #表   values('111','工本','现金',100.00)  
  insert   #表   values('111','工本','这里你随便加不用改代码',100.00)  
   
   
   
  declare   @sql   varchar(8000)  
  set   @sql   =   'select   a   部门,b   项目,sum(1)   数量'  
  select   @sql   =   @sql   +   ',sum(case   c   when   '''+c+'''   then   d   else   0   end)   as   ['+c+']'  
      from   (select   distinct   c   from   #表)   as   a  
  select   @sql   =   @sql+'   from   #表   group   by   a,b'  
   
  exec(@sql)  
  go  
   
   
   
  drop   table   #表Top

18 楼pengdali()回复于 2003-05-03 16:08:10 得分 0

语法没问题,是你改出问题了!你把你改的贴出来!Top

19 楼caiyunxia(夏才云)回复于 2003-05-03 16:10:52 得分 0

我说   monkey   改过个中文名吧!你都当爸爸了还monkey   估计你是属猴的!  
  不是  
  高中时同学的呢称Top

20 楼pengdali()回复于 2003-05-03 16:12:20 得分 0

to     caiyunxia(monkey)    
   
  http://expert.csdn.net/Expert/TopicView1.asp?id=1735330Top

21 楼bzlj(bzlj)回复于 2003-05-03 16:18:20 得分 0

语法没问题,但  
  select   @sql   =   @sql   +   ',sum(case   c   when   '''+c+'''   then   d   else   0   end)   as   ['+c+']'  
      from   (select   distinct   c   from   #表)   as   a    
  这句中的    
      from   (select   distinct   c   from   #表)   as   a    
  什么意思?  
  我知道实现的意思,但我从没写过这种语句。  
  怎么生成SQL语句的呢  
  谢谢Top

22 楼pengdali()回复于 2003-05-03 16:21:39 得分 0

from   (select   distinct   c   from   #表)   as   a   是子查询,根据你表你的  
   
  现金.支票.动态得到   sum(case   ...)  
   
  如果你不这样写,以后加了一个如汇款,你又要去改你的代码了,也就是说这样的话,可以动态根据表的实际内容得出你想要的结果  
  Top

23 楼caiyunxia(夏才云)回复于 2003-05-03 16:22:18 得分 0

动态SQLTop

24 楼bzlj(bzlj)回复于 2003-05-03 16:54:55 得分 0

谢谢你们两位了。  
  我自己再慢慢看看。Top

相关问题

  • 问个SQL语句。
  • 问个SQL语句?
  • 问个SQL语句
  • 问个sql语句
  • 问个sql语句
  • 问个SQL语句
  • 一个sql语句问题
  • 问一个SQL语句
  • 请问一个SQL语句
  • 一个SQL语句问题

关键词

  • 语句
  • 语法
  • 项目
  • sql
  • 支票
  • 现金
  • monkey
  • 工本
  • caiyunxia
  • pengdali

得分解答快速导航

  • 帖主:bzlj
  • caiyunxia
  • pengdali

相关链接

  • SQL Server类图书

广告也精彩

反馈

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