注册 登录
编程论坛 SQL Server论坛

请教 sql语句查询问题

zhuxzh2007 发布于 2011-08-26 16:09, 620 次点击

年份    月份    名称    金额
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                                
查询语句应该怎么写?
7 回复
#2
cnfarer2011-08-27 15:59
用:case when then end 就行了
#3
zhuxzh20072011-08-30 11:05
回复 2楼 cnfarer
具体要怎么写,请高手指点一下。
#4
scilent2011-08-31 17:52
去手册上查一下
#5
png2011-08-31 23:13
我试试把版主的意思具体化.  详细可查看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 编辑 ]
#6
tangyunzhong2011-09-01 21:38
以下是引用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年的,你要不是也列出来啊!
   你的要求应该是把行转列对吧!
   语句都不是那样写的,那样是写死了的,不要可能显示其他年月分的。
#7
a60681322011-09-08 17:16
select sum(金额) from 表名 where 年份='2007' and 月份='1' and 名称='AAA'
#8
暗尘2011-09-15 13:56
楼上的 貌似你没有搞懂他的意思吧 你那显示的结果太过很是哪种显示结构  他是要求行与列的调换.....
1