某彩票網站的一個數據表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 行)
*/