日期:2014-05-18  浏览次数:20386 次

以功能怎么现实
有以下格式:
人名 行号 列1 列2  列3
张三 1 12 231 23
张三 2 2 232 24
张三 3 3 233 25
张三 4 4 234 26
张三 5 33 235 27
李四 1 34 236 28
李四 2 22 237 29
李四 3 33 238 30
李四 4 44 239 31
李四 5 38 240 32
王五 1 39 241 33
王五 2 222 242 34
王五 3 333 243 35
王五 4 444 244 36
王五 5 43 123 37

想只用一个select 语句 把 每人的第2、3、4行中第1列的数据取出来相加 可以现实吗?
最后的结果 就是 张三,9(2+3+4)
         李四,99(22+33+44)
         王五,999(222+333+444)


------解决方案--------------------
SQL code
create table t1(人名 varchar(10),行号 int,列1 int,列2 int,列3 int)
insert t1
select '张三',    1,    12,    231,    23 union all
select '张三',    2,    2,    232,    24 union all
select '张三',    3,    3,    233,    25 union all
select '张三',    4,    4,    234,    26 union all
select '张三',    5,    33,    235,    27 union all
select '李四',    1,    34,    236,    28 union all
select '李四',    2,    22,    237,    29 union all
select '李四',    3,    33,    238,    30 union all
select '李四',    4,    44,    239,    31 union all
select '李四',    5,    38,    240,    32 union all
select '王五',    1,    39,    241,    33 union all
select '王五',    2,    222,242,    34 union all
select '王五',    3,    333,243,    35 union all
select '王五',    4,    444,244,    36 union all
select '王五',    5,    43,    123,    37
go
select 人名,列=sum(列1) from t1
where 行号 in (2,3,4)
group by 人名
/*
人名   列
----  ---
李四    99
王五    999
张三    9
*/
go
drop table t1