首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

发个BT的SQL需求,大家看看有啥解决方法没

2012-01-07 
发个BT的SQL需求,大家看看有啥解决办法没有这样一个数据表USER_IDUSER_DATANAMEUSER_DATAVALUEAX12BX23CZ3

发个BT的SQL需求,大家看看有啥解决办法没
有这样一个数据表

USER_ID   USER_DATANAME   USER_DATAVALUE
    A                   X                           12
    B                   X                           23
    C                   Z                           34
    B                   Y                           45
    A                   Z                           12
    C         X                           23
    A                   Y                           14
    B                   z                           98
    c         y                           199
表名:TABLE

想输出为

      USER_ID       X           Y           Z
            A             12         14         12
            B             23         45         98
            C             23         199       34

其中   X,Y   ,Z   的个数是不定的,各位牛牛们看看,有用一条SQL命令实现的可能吗?

[解决办法]
一条
select USER_ID,
[X]=sum(case when USER_DATANAME= 'X ' then USER_DATAVALUE else 0 end),
[Y]=sum(case when USER_DATANAME= 'Y ' then USER_DATAVALUE else 0 end),
[Z]=sum(case when USER_DATANAME= 'Z ' then USER_DATAVALUE else 0 end)
from t
group by USER_ID
[解决办法]
使用動態SQL語句
Declare @S Varchar(8000)
Select @S = ' Select [USER_ID] '
Select @S = @S + ', SUM(Case USER_DATANAME When ' ' ' + USER_DATANAME + ' ' ' Then USER_DATAVALUE Else 0 End) As ' + USER_DATANAME
From [TABLE] Group By USER_DATANAME
Select @S = @S + ' From [TABLE] Group By [USER_ID] '
EXEC(@S)
[解决办法]
2005可以,2000不行

热点排行