您的位置:首页 > 其它

选出彩票中奖用户

2009-05-22 16:55 169 查看
某彩票网站的一个数据表T_DATA有7个数字字段(F1,F2~F7),

用于存储彩民购买的彩票上的7个号码(顺序按数字从小到大分别放在F1~F7中):
T_DATA
FNAME F1 F2 F3 F4 F5 F6 F7
张三 1 3 5 12 21 22 30
李四 4 6 12 14 24 28 29
… … … … … … … …
摇奖摇出了一组号码也是7个数字:
3,12,14,17,19,22,30
只要有4个号码符合的用户就会获奖,请使用一条符合SQL92规范的语句把中奖的用户查询出来。
-------------------------------------------------------------------------------------------------

declare @str varchar(1000)

declare @T_DATA table(FNAME nvarchar(5), F1 int, F2 int,

F3 int, F4 int,F5 int, F6 int, F7 int )

create  table #temp(F1 int)

set @str='3,12,14,17,19,22,30'

set @str='select  '''+replace(@str,',',''''+' union all select ''')+''''

insert #temp exec (@str)

insert @T_DATA select N'张三', 1, 3, 5, 12, 21, 22, 30

insert @T_DATA select N'李四' ,4, 6 ,12, 14 ,24, 28, 29

select fname from

(select FNAME,F1 from @T_DATA
union all
select FNAME,F2 from @T_DATA
union all
select FNAME,F3 from @T_DATA
union all
select FNAME,F4 from @T_DATA
union all
select FNAME,F5 from @T_DATA
union all
select FNAME,F6 from @T_DATA
union all
select FNAME,F7 from @T_DATA) a ,#temp b

where a.f1=b.f1 group by fname having count(1)>=4

drop table #temp
/*
fname
-----
张三

(所影响的行数为 1 行)
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: