| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 620 人关注过本帖
标题:请教 sql语句查询问题
只看楼主 加入收藏
zhuxzh2007
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-8-26
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:7 
请教 sql语句查询问题

年份    月份    名称    金额
2007    1    AAA    1000
2007    2    AAA    1001
2007    3    AAA    1002
2007    4    BBB    1003
2007    5    AAA    1004
2007    6    BBB    1005
2007    7    AAA    1006
2007    8    AAA    1007
2007    9    BBB    1008
2007    10    AAA    1009
2007    11    AAA    1010
2007    12    BBB    1011
要得到以下的结果
名称   2007年1月金额  2007年2月金额 2007年3月金额 2007年4月金额 2007年5月金额 2007年6月金额 2007年7月金额 2007年8月金额
AAA                                
BBB                                
查询语句应该怎么写?
搜索更多相关主题的帖子: sql语句 
2011-08-26 16:09
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
用:case when then end 就行了

★★★★★为人民服务★★★★★
2011-08-27 15:59
zhuxzh2007
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-8-26
收藏
得分:0 
回复 2楼 cnfarer
具体要怎么写,请高手指点一下。
2011-08-30 11:05
scilent
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:285
专家分:1399
注 册:2011-8-9
收藏
得分:0 
去手册上查一下

在没有路的地方走一条路,让别人有路可走
2011-08-31 17:52
png
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:126
专家分:880
注 册:2010-10-6
收藏
得分:20 
我试试把版主的意思具体化.  详细可查看SQL行列转化.这部分属于T-SQL进级内容. 

方法1 - 传统做法

select       Name,
             max(case when Month=1 then Amount end) as Jan,
             max(case when Month=2 then Amount end) as Feb,
             max(case when Month=8 the  Amount end) as Aug
from         TableName
group by     Name


方法2 - SQL 2005 及其后版本

select        Name, [1] Jan, [2] Feb, [8] Aug     
from (
        select    Name, Month, Amount
        from      TableTame
     )TempTB
     PIVOT
     (
        max(Amount)
        for Month in ([1], [2], [8])
     )PivotTB
 

[ 本帖最后由 png 于 2011-8-31 23:16 编辑 ]
2011-08-31 23:13
tangyunzhong
Rank: 5Rank: 5
来 自:广西
等 级:职业侠客
威 望:4
帖 子:97
专家分:364
注 册:2010-7-28
收藏
得分:0 
以下是引用zhuxzh2007在2011-8-26 16:09:25的发言:


年份    月份    名称    金额
2007    1    AAA    1000
2007    2    AAA    1001
2007    3    AAA    1002
2007    4    BBB    1003
2007    5    AAA    1004
2007    6    BBB    1005
2007    7    AAA    1006
2007    8    AAA    1007
2007    9    BBB    1008
2007    10    AAA    1009
2007    11    AAA    1010
2007    12    BBB    1011
要得到以下的结果
名称   2007年1月金额  2007年2月金额 2007年3月金额 2007年4月金额 2007年5月金额 2007年6月金额 2007年7月金额 2007年8月金额
AAA                                
BBB                                
查询语句应该怎么写?
   你说得不清楚的,现在你才列出来07年的一部分,要是还有08年的,你要不是也列出来啊!
   你的要求应该是把行转列对吧!
   语句都不是那样写的,那样是写死了的,不要可能显示其他年月分的。
2011-09-01 21:38
a6068132
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:47
专家分:131
注 册:2011-5-10
收藏
得分:0 
select sum(金额) from 表名 where 年份='2007' and 月份='1' and 名称='AAA'
2011-09-08 17:16
暗尘
Rank: 2
等 级:论坛游民
帖 子:22
专家分:37
注 册:2011-9-15
收藏
得分:0 
楼上的 貌似你没有搞懂他的意思吧 你那显示的结果太过很是哪种显示结构  他是要求行与列的调换.....
2011-09-15 13:56
快速回复:请教 sql语句查询问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031924 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved