22,209
社区成员
发帖
与我相关
我的任务
分享
----建立奖级表 #tj -- select * from #tj
if object_id('tempdb..#tj') is not null drop table #tj
create table #tj
(jname varchar(10), -- 奖级
jstatus varchar(100), -- 中奖条件
jamount int -- 奖金
)
insert into #tj
select '一等奖','5+2',10000000 union all
select '二等奖','5+1',307985 union all
select '三等奖','5+0,4+2',13062 union all
select '四等奖','4+1,3+2',200 union all
select '五等奖','4+0,3+1,2+2',10 union all
select '六等奖','3+0,1+2,2+1,0+2',5
----> 建立数据表,条件一:简称集合A
if object_id('tempdb..#tb1') is not null drop table #tb1-- select *from #tb1 order by 序号
CREATE TABLE #tb1([序号] [bigint] IDENTITY(1,1),[NO1] [int], [NO2] [int], [NO3] [int], [NO4] [int], [NO5] [int], [BLU1] [int], [BlU2] [int])
insert #tb1
select '03','15','21','27','29','04','05' union all
select '03','15','21','27','33','04','05' union all
select '03','15','21','27','35','04','05' union all
select '03','15','21','29','33','04','05' union all
select '03','15','21','29','35','04','05' union all
select '03','15','21','33','35','04','05' union all
select '03','15','22','27','29','04','05' union all
select '03','15','22','27','33','04','05'
----> 建立数据表,条件二:简称集合B
if object_id('tempdb..#33') is not null drop table #33
if object_id('tempdb..#tb2') is not null drop table #tb2 -- select *from #tb2 order by 序号
CREATE TABLE #tb2([序号] [bigint] IDENTITY(1,1) ,[NO1] [int], [NO2] [int], [NO3] [int], [NO4] [int], [NO5] [int], [BLU1] [int], [BlU2] [int])
insert #tb2
select '03','05','21','27','29','01','07' union all
select '03','11','21','27','31','04','07' union all
select '03','12','21','27','35','04','07' union all
select '03','13','21','29','31','04','05' union all
select '03','14','22','29','35','01','07' union all
select '03','15','21','33','35','04','05' union all
select '03','16','23','27','29','01','07' union all
select '03','17','23','27','35','04','05'
--->测试
DECLARE @base bigint
SET @base = 2
IF OBJECT_ID('TempDB..#tb1Cte')IS NOT NULL DROP TABLE #tb1Cte
SELECT *
,POWER(@base,no1-1) +
POWER(@base,no2-1) +
POWER(@base,no3-1) +
POWER(@base,no4-1) +
POWER(@base,no5-1) AS value
INTO #tb1Cte
FROM #tb1
IF OBJECT_ID('TempDB..#tb2Cte')IS NOT NULL DROP TABLE #tb2Cte
SELECT *
,POWER(@base,no1-1) +
POWER(@base,no2-1) +
POWER(@base,no3-1) +
POWER(@base,no4-1) +
POWER(@base,no5-1) AS value
INTO #tb2Cte
FROM #tb2
IF OBJECT_ID('TempDB..#result')IS NOT NULL DROP TABLE #result
CREATE TABLE #result([序号1] [bigint] NULL,[序号2] [bigint] NULL,[jstatus] varchar(100))
--5+0 5+1 5+2
INSERT INTO #result
SELECT T1.序号,T2.序号,CASE WHEN T1.Blu1=T2.Blu1 THEN '5+0,5+1,5+2' ELSE '5+0,5+1,5+2' END
FROM #tb1Cte T1 JOIN #tb2Cte T2 ON T1.value=T2.value
IF OBJECT_ID('TempDB..#Number')IS NOT NULL DROP TABLE #Number
SELECT POWER(@base,number) value
INTO #Number
FROM master..spt_values
WHERE TYPE='P'AND number<36
--4+0 4+1 4+2
--Start
IF OBJECT_ID('TempDB..#2bitDiff')IS NOT NULL DROP TABLE #2bitDiff
SELECT T1.value + T2.value value
INTO #2bitDiff
FROM #Number T1
JOIN #Number T2
ON T1.value < T2.value
INSERT INTO #result
SELECT T1.序号,T2.序号,CASE WHEN T1.Blu1=T2.Blu1 THEN '4+0,4+1,4+2' ELSE '4+0,4+1,4+2' END
FROM #tb1Cte T1 JOIN #tb2Cte T2 ON (T1.value^T2.value)IN(SELECT value FROM #2bitDiff)
LEFT JOIN #result T3 ON T1.序号=T3.序号1 AND T2.序号=T3.序号2
WHERE T3.序号1 IS NULL
--end
--3+0 3+1 3+2
--Start
IF OBJECT_ID('TempDB..#4bitDiff')IS NOT NULL DROP TABLE #4bitDiff
SELECT T1.value + T2.value + T3.value + T4.value value
INTO #4bitDiff
FROM #Number T1
JOIN #Number T2 ON T1.value < T2.value
JOIN #Number T3 ON T2.value < T3.value
JOIN #Number T4 ON T3.value < T4.value
INSERT INTO #result
SELECT T1.序号,T2.序号,CASE WHEN T1.Blu1=T2.Blu1 THEN '3+0,3+1,3+2' ELSE '3+0,3+1,3+2' END
FROM #tb1Cte T1 JOIN #tb2Cte T2 ON (T1.value^T2.value)IN(SELECT value FROM #4bitDiff)
LEFT JOIN #result T3 ON T1.序号=T3.序号1 AND T2.序号=T3.序号2
WHERE T3.序号1 IS NULL
--end
--2+2 2+1
--Start
IF OBJECT_ID('TempDB..#3bitDiff')IS NOT NULL DROP TABLE #3bitDiff
SELECT T1.value + T2.value + T3.value value
INTO #3bitDiff
FROM #Number T1
JOIN #Number T2 ON T1.value < T2.value
JOIN #Number T3 ON T2.value < T3.value
INSERT INTO #result
SELECT T1.序号,T2.序号,'2+2,2+1'
FROM #tb1Cte T1 JOIN #tb2Cte T2 ON T1.Blu1=T2.Blu1 AND (T1.value&T2.value)IN(SELECT value FROM #3bitDiff)
LEFT JOIN #result T3 ON T1.序号=T3.序号1 AND T2.序号=T3.序号2
WHERE T3.序号1 IS NULL
--end
--1+2 0+2
INSERT INTO #result
SELECT T1.序号,T2.序号,'1+2,0+2'
FROM #tb1Cte T1 JOIN #tb2 T2 ON T1.Blu1=T2.Blu1
LEFT JOIN #result T3 ON T1.序号=T3.序号1 AND T2.序号=T3.序号2
WHERE T3.序号1 IS NULL
SELECT T1.序号2
,SUM(T2.jamount)jamount
into #33
FROM #result T1
JOIN #tj T2 ON T1.jstatus=T2.jstatus
GROUP BY T1.序号2
if object_id('tempdb..#44') is not null drop table #44
go
select a.序号2,a.jamount,b.[序号],b.[NO1],b.[NO2],b.[NO3],b.[NO4],b.[NO5],b.[Blu1] ,b.[Blu2]
into #44
from #33 a left join #tb2 b on a.序号2=b.序号 order by jamount
if object_id('tempdb..#55') is not null drop table #55
go
select *,right('00'+cast(no1 as varchar),2)+' '+
right('00'+cast(no2 as varchar),2)+' '+
right('00'+cast(no3 as varchar),2)+' '+
right('00'+cast(no4 as varchar),2)+' '+
right('00'+cast(no5 as varchar),2)+'+'+
right('00'+cast(blu1 as varchar),2)+' '+
right('00'+cast(blu2 as varchar),2)as notext into #55 from #44
select * from #55 --where jamount < 318025
if object_id('tempdb..#tj') is not null drop table #tj
create table #tj
(jname varchar(10), -- 奖级
jstatus varchar(100), -- 中奖条件
jamount int -- 奖金
)
insert into #tj
select '一等奖','5+2',10000000 union all
select '二等奖','5+1',307985 union all
select '三等奖','5+0,4+2',13062 union all
select '四等奖','4+1,3+2',200 union all
select '五等奖','4+0,3+1,2+2',10 union all
select '六等奖','3+0,1+2,2+1,0+2',5
DECLARE @base bigint
SET @base = 2
----> 建立数据表,条件一:简称集合A
if object_id('tempdb..#tb1') is not null drop table #tb1-- select *from #tb1 order by 序号
CREATE TABLE #tb1([序号] [bigint] IDENTITY(1,1),[NO1] [int], [NO2] [int], [NO3] [int], [NO4] [int], [NO5] [int], [BLU1] [int], [BlU2] [int])
insert #tb1
select '03','15','21','27','29','04','05' union all
select '03','15','21','27','33','04','05' union all
select '03','15','21','27','35','04','05' union all
select '03','15','21','29','33','04','05' union all
select '03','15','21','29','35','04','05' union all
select '03','15','21','33','35','04','05' union all
select '03','15','22','27','29','04','05' union all
select '03','15','22','27','33','04','05'
--SELECT * FROM #tb1
----> 建立数据表,条件二:简称集合B
if object_id('tempdb..#tb2') is not null drop table #tb2 -- select *from #tb2 order by 序号
CREATE TABLE #tb2([序号] [bigint] IDENTITY(1,1) ,[NO1] [int], [NO2] [int], [NO3] [int], [NO4] [int], [NO5] [int], [BLU1] [int], [BlU2] [int])
insert #tb2
select '03','05','21','27','29','01','07' union all
select '03','11','21','27','31','04','07' union all
select '03','12','21','27','35','04','07' union all
select '03','13','21','29','31','04','05' union all
select '03','14','22','29','35','01','07' union all
select '03','15','21','33','35','04','05' union all
select '03','16','23','27','29','01','07' union all
select '03','17','23','27','35','04','05'
--select '03','14','22','29','35','01','07'
--SELECT * FROM #tb2
IF OBJECT_ID('TempDB..#tb1Cte')IS NOT NULL DROP TABLE #tb1Cte
SELECT *
,POWER(@base,no1-1) +
POWER(@base,no2-1) +
POWER(@base,no3-1) +
POWER(@base,no4-1) +
POWER(@base,no5-1) AS value
,POWER(@base,BLU1-1) +
POWER(@base,BLU2-1) AS value2
INTO #tb1Cte
FROM #tb1
IF OBJECT_ID('TempDB..#tb2Cte')IS NOT NULL DROP TABLE #tb2Cte
SELECT *
,POWER(@base,no1-1) +
POWER(@base,no2-1) +
POWER(@base,no3-1) +
POWER(@base,no4-1) +
POWER(@base,no5-1) AS value
,POWER(@base,BLU1-1) +
POWER(@base,BLU2-1) AS value2
INTO #tb2Cte
FROM #tb2
IF OBJECT_ID('TempDB..#result')IS NOT NULL DROP TABLE #result
CREATE TABLE #result([序号1] [bigint] NULL,[序号2] [bigint] NULL,[jstatus] varchar(100))
--5+0 5+1 5+2
INSERT INTO #result
SELECT T1.序号,T2.序号,CASE WHEN T1.value2=T2.value2 THEN '5+2' WHEN T1.value2&T2.value2>0 THEN '5+1' ELSE '5+0,4+2' END
FROM #tb1Cte T1 JOIN #tb2Cte T2 ON T1.value=T2.value
IF OBJECT_ID('TempDB..#Number')IS NOT NULL DROP TABLE #Number
SELECT POWER(@base,number) value
INTO #Number
FROM master..spt_values
WHERE TYPE='P'AND number<36
--4+0 4+1 4+2
--Start
IF OBJECT_ID('TempDB..#2bitDiff')IS NOT NULL DROP TABLE #2bitDiff
SELECT T1.value + T2.value value
INTO #2bitDiff
FROM #Number T1
JOIN #Number T2
ON T1.value < T2.value
INSERT INTO #result
SELECT T1.序号,T2.序号,CASE WHEN T1.value2=T2.value2 THEN '5+0,4+2' WHEN T1.value2&T2.value2>0 THEN '4+1,3+2' ELSE '4+0,3+1,2+2' END
FROM #tb1Cte T1 JOIN #tb2Cte T2 ON (T1.value^T2.value)IN(SELECT value FROM #2bitDiff)
LEFT JOIN #result T3 ON T1.序号=T3.序号1 AND T2.序号=T3.序号2
WHERE T3.序号1 IS NULL
--end
--3+0 3+1 3+2
--Start
IF OBJECT_ID('TempDB..#3bitDiff')IS NOT NULL DROP TABLE #3bitDiff
SELECT T1.value + T2.value + T3.value value
INTO #3bitDiff
FROM #Number T1
JOIN #Number T2 ON T1.value < T2.value
JOIN #Number T3 ON T2.value < T3.value
INSERT INTO #result
SELECT T1.序号,T2.序号,CASE WHEN T1.value2=T2.value2 THEN '4+1,3+2' WHEN T1.value2&T2.value2>0 THEN '4+0,3+1,2+2' ELSE '3+0,1+2,2+1,0+2' END
FROM #tb1Cte T1 JOIN #tb2Cte T2 ON (T1.value&T2.value)IN(SELECT value FROM #3bitDiff)
LEFT JOIN #result T3 ON T1.序号=T3.序号1 AND T2.序号=T3.序号2
WHERE T3.序号1 IS NULL
--end
--2+2,2+1
--Start
INSERT INTO #result
SELECT T1.序号,T2.序号,CASE WHEN T1.value2=T2.value2 THEN '4+0,3+1,2+2' ELSE '3+0,1+2,2+1,0+2' END
FROM #tb1Cte T1 JOIN #tb2Cte T2 ON T1.value2&T2.value2>0 AND (T1.value&T2.value)IN(SELECT value FROM #2bitDiff)
LEFT JOIN #result T3 ON T1.序号=T3.序号1 AND T2.序号=T3.序号2
WHERE T3.序号1 IS NULL
--1+2,0+2
INSERT INTO #result
SELECT T1.序号,T2.序号,'3+0,1+2,2+1,0+2'
FROM #tb1Cte T1 JOIN #tb2Cte T2 ON T1.value2=T2.value2
LEFT JOIN #result T3 ON T1.序号=T3.序号1 AND T2.序号=T3.序号2
WHERE T3.序号1 IS NULL
--SELECT T1.序号1,T1.序号2,T1.jstatus,T3.* FROM #result T1
-- JOIN #tj T2 ON T1.jstatus=T2.jstatus
-- JOIN #tb1Cte T3 ON T1.序号1=T3.序号
--ORDER BY 序号1,序号2/*
SELECT T1.序号2
,SUM(T2.jamount)jamount
FROM #result T1
JOIN #tj T2 ON T1.jstatus=T2.jstatus
GROUP BY T1.序号2