读书人

数据的奇偶性判断与汇兑

发布时间: 2012-03-03 15:33:04 作者: rapoo

高手请进,数据的奇偶性判断与汇兑
我的数据表如下

字段1 字段2 字段3 字段4 字段5 字段6 字段7
1 3 5 6 16 30 33
4 5 8 9 12 34 35

我想要的结果是再增加一个字段8,把每条记录中的数字判断其奇偶性,并把奇数:偶数的比例存放到字段8中,
比如,
在记录1中,有 1,6,16,30 4个偶数,有3,5,33 3个奇数,则字段8的值是, 4:3

则这个查询语句应该怎么写?在线等,谢谢.


[解决办法]

SQL code
declare @t table(字段1 int,字段2 int, 字段3 int, 字段4 int, 字段5 int, 字段6 int,字段7 int)    
insert @t select 1, 3, 5, 6, 16, 30, 33
insert @t select 4, 5, 8, 9, 12, 34, 35


select
*,
[字段8]=(select rtrim(sum(case when col%2=1 then 1 else 0 end))+':'+rtrim(sum(case when col%2=0 then 1 else 0 end))
from (select 字段1 as col union all select 字段2 union all select 字段3 union all select 字段4
union all select 字段5 union all select 字段6 union all select 字段7)t )
from
@t


(所影响的行数为 1 行)


(所影响的行数为 1 行)

字段1 字段2 字段3 字段4 字段5 字段6 字段7 字段8
----------- ----------- ----------- ----------- ----------- ----------- ----------- -------------------------
1 3 5 6 16 30 33 4:3
4 5 8 9 12 34 35 3:4

(所影响的行数为 2 行)


[解决办法]
SQL code
declare @t table(a int,b int, c int, d int, e int, f int,g int)     insert @t select 1,           3,       5,         6,     16,       30,       33       insert @t select 4,           5,       8,         9,     12,       34,       35   select *,h=rtrim(       (case when a%2=0 then 1 else 0 end)     +(case when b%2=0 then 1 else 0 end)     +(case when c%2=0 then 1 else 0 end)     +(case when d%2=0 then 1 else 0 end)     +(case when e%2=0 then 1 else 0 end)     +(case when f%2=0 then 1 else 0 end)     +(case when g%2=0 then 1 else 0 end)       )+':'+     rtrim(       (case when a%2=1 then 1 else 0 end)     +(case when b%2=1 then 1 else 0 end)     +(case when c%2=1 then 1 else 0 end)     +(case when d%2=1 then 1 else 0 end)     +(case when e%2=1 then 1 else 0 end)     +(case when f%2=1 then 1 else 0 end)     +(case when g%2=1 then 1 else 0 end)    )from @t/*--------------------------1    3    5    6    16    30    33    3:44    5    8    9    12    34    35    4:3*/ 

读书人网 >SQL Server

热点推荐