----------大乐透--------------------
if object_id('Front') is not null
drop table Front
go
create table Front
(
id int ,
Frontnumber int default 0 ,
)
if object_id('Back') is not null
drop table Back
go
create table Back
(
id INT,
Backnumber int default 0
)
/*IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ID')
DROP INDEX IX_ID ON Front ;
GO
CREATE CLUSTERED INDEX IX_ID ON Front(ID);
GO
IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_BackID')
DROP INDEX IX_ID ON Back ;
GO
CREATE CLUSTERED INDEX IX_BackID ON Back(ID);
GO*/
--随机插入10000条数据
DECLARE @I INT
SET @I=1
WHILE(@I<=10000)
BEGIN
INSERT INTO Front VALUES(@I,ABS(CHECKSUM(NEWID()))%33+1)
SET @I=@I+1
END
DECLARE @J INT
SET @J=1
WHILE(@J<=10000)
BEGIN
INSERT INTO Back VALUES(@J,ABS(CHECKSUM(NEWID()))%12+1)
SET @J=@J+1
END
if OBJECT_ID('SP_DALETOU') IS NOT NULL
DROP PROC SP_DALETOU
GO
CREATE PROC SP_DALETOU
(
@I INT
)
AS
BEGIN
DECLARE @SQL VARCHAR(MAX)
--DECLARE @N1 INT
--DECLARE @N2 INT
--SET @N1=@I
--SET @N2=@I
SET @SQL='
if object_id(''tempdb..#Front'') is not null
drop table #Front
create table #Front
(
id int ,
Frontnumber int default 0 ,
)
if object_id(''tempdb..#Back'') is not null
drop table #Back
create table #Back
(
id int ,
Backnumber int default 0 ,
)
insert into #Front select * from front order by NEWID() insert into #Back select * from back order by NEWID()'
SELECT @SQL=@SQL+'
select
top '+ltrim(@I)+' *
from
(
select
C1 AS 前区1,
C2 AS 前区2,
C3 AS 前区3,
C4 AS 前区4,
C5 AS 前区5
from
(
select
(ID-1)/5 AS PX,
MAX(case when ID%5=1 then Frontnumber else 0 end) as c1,
MAX(case when ID%5=2 then Frontnumber else 0 end) as c2,
MAX(case when ID%5=3 then Frontnumber else 0 end) as c3,
MAX(case when ID%5=4 then Frontnumber else 0 end) as c4,
MAX(case when ID%5=0 then Frontnumber else 0 end) as c5
from
#Front
GROUP BY
(ID-1)/5
)t
where
c1
c2 and c1
c3 and c1
c4 and c1
c5 and c2
c3 and c2
c4 and c2
c5 and c3
c4 and c3
c5 and c4
c5)t
select
top '+ltrim(@I)+' *
from
(
select
C6 AS 后区1,
C7 AS 后区2
from
(
select
(ID-1)/2 AS PX,
MAX(case when ID%2=1 then Backnumber else 0 end) as c6,
MAX(case when ID%2=0 then Backnumber else 0 end) as c7
from
#Back
GROUP BY
(ID-1)/2
)t
where
c6
c7)t '
exec(@SQL)
END
GO
EXEC SP_DALETOU 2
GO
---双色球---------
if object_id('Red') is not null
drop table Red
go
create table Red
(
id int ,
Rednumber int default 0 ,
)
if object_id('Blue') is not null
drop table Blue
go
create table Blue
(
id INT,
Bluenumber int default 0
)
/*IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_RedID')
DROP INDEX IX_ID ON Red ;
GO
CREATE CLUSTERED INDEX IX_ID ON Red(ID);
GO
IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_BlueID')
DROP INDEX IX_ID ON Blue ;
GO
CREATE CLUSTERED INDEX IX_BackID ON Blue(ID);
GO */
--随机插入10000条数据
DECLARE @I INT
SET @I=1
WHILE(@I<=10000)
BEGIN
INSERT INTO Red VALUES(@I,ABS(CHECKSUM(NEWID()))%35+1)
SET @I=@I+1
END
DECLARE @J INT
SET @J=1
WHILE(@J<=10000)
BEGIN
INSERT INTO Blue VALUES(@J,ABS(CHECKSUM(NEWID()))%16+1)
SET @J=@J+1
END
if OBJECT_ID('SP_DOUBLE') IS NOT NULL
DROP PROC SP_DOUBLE
GO
CREATE PROC SP_DOUBLE
(
@I INT
)
AS
BEGIN
DECLARE @SQL VARCHAR(MAX)
--DECLARE @N1 INT
--DECLARE @N2 INT
--SET @N1=@I
--SET @N2=@I
SET @SQL='
if object_id(''tempdb..#Red'') is not null
drop table #Red
create table #Red
(
id int ,
Rednumber int default 0 ,
)
if object_id(''tempdb..#Blue'') is not null
drop table #Blue
create table #Blue
(
id int ,
Bluenumber int default 0 ,
)
insert into #Red select * from Red order by NEWID() insert into #Blue select * from Blue order by NEWID()'
SELECT @SQL=@SQL+'
select
top '+ltrim(@I)+' *
from
(
select
C1 as 红球1,
C2 as 红球2,
C3 as 红球3,
C4 as 红球4,
C5 as 红球5,
C6 as 红球6
from
(
select
(ID-1)/6 AS PX,
MAX(case when ID%6=1 then Rednumber else 0 end) as c1,
MAX(case when ID%6=2 then Rednumber else 0 end) as c2,
MAX(case when ID%6=3 then Rednumber else 0 end) as c3,
MAX(case when ID%6=4 then Rednumber else 0 end) as c4,
MAX(case when ID%6=5 then Rednumber else 0 end) as c5,
MAX(case when ID%6=0 then Rednumber else 0 end) as c6
from
#Red
GROUP BY
(ID-1)/6
)t
where
c1
c2 and c1
c3 and c1
c4 and c1
c5 and c1
c6 and c2
c3 and c2
c4 and c2
c5 and c2
c6 and c3
c4 and c3
c5 and c3
c6 and c4
c5 and c4
c6 and c5
c6)t
select
top '+ltrim(@I)+' Bluenumber AS 蓝球
from
#Blue
'
EXEC(@SQL)
END
GO
EXEC SP_DOUBLE 2
GO
纯粹是无聊而作。没有优化。不要笑话我。