数据拆分,重复的组合只保留一个,如何执行代码完成

RICHEER COCA 2014-05-13 01:02:34
if object_id('tempdb.dbo.#temp') is not null drop table #temp
go
create table #temp([前区胆码]nvarchar(20),[前区拖码] nvarchar(100),[后区胆码] nvarchar(50),[后区拖码] nvarchar(100))
insert #temp
select '10' ,'01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35','','01 02 03 04 05 06 07 08 09 10 11

12'union all
select '10 28' ,'01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35','03','05 07 09 10 12'union all
select '03 10 28' ,'01 02 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35','12','01 02 03 05 07 09 11'union all
select '06 07 10 28' ,'01 02 03 04 05 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35','12','01 02 05 08 09'union all
select '' ,'01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35','','05 09'

--------------生成数据--------------------------


为何执行代码后,无法生成数据
显示的是

消息 8152,级别 16,状态 4,第 1 行
将截断字符串或二进制数据。
语句已终止。


需要解决的问题是
1、第一步生成数据
2、按照 前区胆码、前区拖码、后区胆码、后区拖码里的号码,进行胆拖的投注拆分[,现在用公式只能知道总数,但就不会执行什么代码可以有详细组合(重复的组合只保留一个)

例如,以第三行数据为例
'03 10 28' ,'01 02 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35','12','01 02 03 05 07 09 11'----第三行

(假如为a个前区胆码)03 10 28
(假如为b个前区拖码)01 02 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35
(假如为c个后区胆码)12
(假如为c个后区拖码)01 02 03 05 07 09 11

前区胆码个数为3(0≤a≤4),
前区拖码个数为32(5-a≤b≤35-a),
后区胆码个数为1(0≤c≤1),
后区拖码个数为6(2-c≤d≤12-c),
则此胆拖投注的注数个数为
胆拖的投注拆分说明,总的投注数为COMBIN(b,5-a)*COMBIN(d,2-c)。

前区combin(32,2)×后区combin(6,1)=2976个组合数。
前区combin(32,2)=496 * 后区combin(6,1)=6,那么就有496*6=2976注投注号码,请问如何用执行代码后的结果可以看到详细的组合(重复的组合只保留一个)

胆拖投注注数计算公式:

  设前区胆码个数为a(0≤a≤4),前区拖码个数为m(5-a≤b≤35-a),后区胆码个数为c(0≤c≤1),后区拖码个数为d(2-c≤d≤12-c),则此胆拖投注的注数个数为:

combin(b,5-a)×combin(d,2-c)。

  例:前区胆码个数为3(0≤a≤4),前区拖码个数为32(5-a≤b≤35-a),后区胆码个数为1(0≤c≤1),后区拖码个数为6(2-c≤d≤12-c),则此胆拖投注的注数个数为:combin(32,2)×combin(6,1)=2976。

  
组合:是从n个不同的元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合。
  
组合数公式:  combin(n,m)=n(n-1)…(n-m+1)/1*2…m=n!/m!(n-m)!
...全文
143 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
RICHEER COCA 2014-05-15
  • 打赏
  • 举报
回复
<NewDataSet> <Table1> <名称>双区胆拖</名称> <正则>([^\$]+)\$([^\+]+)\+([^\$]+)\$([^\t\n]+)</正则> <实例>29 30 $ 01 02 03 04 05 06 07 08 09 10 11 12 +02 $ 03 04 05 06 07 08 09 10</实例> </Table1> <Table1> <名称>后区胆拖</名称> <正则>([^\+]+)\+([^\$]+)\$([^\t\n]+)</正则> <实例>29 30 31 32 33 34 35+02 $ 03 04 05 06 07 08 09 10</实例> </Table1> <Table1> <名称>前区胆拖</名称> <正则>([^\$]+)\$([^\+]+)\+([^\t\n]+)</正则> <实例>29 30 $31 32 33 34 35+01 02 03 04 05 06 07 08 09 10 11 12</实例> </Table1> <Table1> <名称>复式</名称> <正则>([^\+]+)\+([^\t\n]+)</正则> <实例>29 30 31 32 33 34 35+01 02 03 04 05 06 07 08 09 10 11 12</实例> </Table1> </NewDataSet> 请指点
RICHEER COCA 2014-05-14
  • 打赏
  • 举报
回复
很是急啊,希望大神们热心快肠
  • 打赏
  • 举报
回复
你能把字符类型定义长一点吗
RICHEER COCA 2014-05-13
  • 打赏
  • 举报
回复
例如,以第三行数据为例 前区combin(32,2)×后区combin(7,1)=3472个组合数。 前区combin(32,2)=496 * 后区combin(7,1)=7,那么就有496*7=3472注投注号码,请问如何用执行代码后的结果可以看到详细的组合(重复的组合只保留一个)
RICHEER COCA 2014-05-13
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
你太粗心了,'01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35'里一共101个字符,前区拖码你只定义了100个,所以数据被截断
谢谢楼上的朋友,更正如下
if object_id('tempdb.dbo.#temp') is not null drop table #temp
go 
create table #temp([前区胆码]nvarchar(20),[前区拖码] nvarchar(200),[后区胆码] nvarchar(50),[后区拖码] nvarchar(100))
insert #temp
select '10' ,'01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35','','01 02 03 04 05 06 07 08 09 10 11 12'union all
select '10 28' ,'01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35','03','05 07 09 10 12'union all
select '03 10 28' ,'01 02 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35','12','01 02 03 05 07 09 11'union all
select '06 07 10 28' ,'01 02 03 04 05 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35','12','01 02 05 08 09'union all
select '' ,'01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35','','05 09'

--------------生成数据--------------------------
xdashewan 2014-05-13
  • 打赏
  • 举报
回复
你太粗心了,'01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35'里一共101个字符,前区拖码你只定义了100个,所以数据被截断
RICHEER COCA 2014-05-13
  • 打赏
  • 举报
回复
学习中,所有的分全用上了,期盼友友赠送100分,谢谢
RICHEER COCA 2014-05-13
  • 打赏
  • 举报
回复
更正 数据拆分,重复的组合只保留一个,如何执行代码完成
if object_id('tempdb.dbo.#temp') is not null drop table #temp
go 
create table #temp([前区胆码]nvarchar(20),[前区拖码] nvarchar(100),[后区胆码] nvarchar(50),[后区拖码] nvarchar(100))
insert #temp
select '10' ,'01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35','','01 02 03 04 05 06 07 08 09 10 11 

12'union all
select '10 28' ,'01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35','03','05 07 09 10 12'union all
select '03 10 28' ,'01 02 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35','12','01 02 03 05 07 09 11'union all
select '06 07 10 28' ,'01 02 03 04 05 08 09 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35','12','01 02 05 08 09'union all
select '' ,'01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35','','05 09'

--------------生成数据--------------------------

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧