问题描述
我有一个 33 人的名单,他们需要与每个人见面一次,我有具体的见面日期。 我如何在表中复制这些日期?
我不必在 mssql 中做这个,它甚至可以是 excel
很高兴得到一些如何解决这个问题的反馈,手工操作似乎是浪费时间,说实话没那么简单
我现在有这样的东西:
insert into @Tdate ( data ) select '20210426'
insert into @Tdate ( data ) select '20210510'
insert into @Tdate ( data ) select '20210524'
insert into @Tdate ( data ) select '20210607'
insert into @Tdate ( data ) select '20210621'
insert into @Tdate ( data ) select '20210705'
insert into @Tdate ( data ) select '20210719'
insert into @Tdate ( data ) select '20210802'
insert into @Tdate ( data ) select '20210816'
insert into @Tdate ( data ) select '20210830'
insert into @Tdate ( data ) select '20210913'
insert into @Tdate ( data ) select '20210927'
insert into @Tdate ( data ) select '20211011'
insert into @Tdate ( data ) select '20211025'
insert into @Tdate ( data ) select '20211108'
insert into @Tdate ( data ) select '20211122'
insert into @Tdate ( data ) select '20211206'
insert into @Tdate ( data ) select '20211220'
insert into @Tdate ( data ) select '20220103'
insert into @Tdate ( data ) select '20220117'
insert into @Tdate ( data ) select '20220131'
insert into @Tdate ( data ) select '20220214'
insert into @Tdate ( data ) select '20220228'
insert into @Tdate ( data ) select '20220314'
insert into @Tdate ( data ) select '20220328'
insert into @Tdate ( data ) select '20220411'
insert into @Tdate ( data ) select '20220425'
insert into @Tdate ( data ) select '20220509'
insert into @Tdate ( data ) select '20220523'
insert into @Tdate ( data ) select '20220606'
insert into @Tdate ( data ) select '20220620'
insert into @Tdate ( data ) select '20220704'
select * from @tdate
declare @tperson table ( lp int identity(1,1),person varchar(120),[AA] date,[AB] date,[AC] date,[AD] date,[AE] date,[AF] date,[AG] date,[AH] date,[AI] date,[AJ] date,[AK] date,[AL] date,[AM] date,[AN] date,[AO] date,[AP] date,[AR] date,[AS] date,[AT] date,[AU] date,[AW] date,[AX] date,[AY] date,[AZ] date,[BA] date,[BB] date,[BC] date,[BD] date,[BF] date,[BE] date,[BG] date,[BH] date,[BI] date )
insert into @tperson ( person )
select 'AA'
insert into @tperson ( person )
select 'AB'
insert into @tperson ( person )
select 'AC'
insert into @tperson ( person )
select 'AD'
insert into @tperson ( person )
select 'AE'
insert into @tperson ( person )
select 'AF'
insert into @tperson ( person )
select 'AG'
insert into @tperson ( person )
select 'AH'
insert into @tperson ( person )
select 'AI'
insert into @tperson ( person )
select 'AJ'
insert into @tperson ( person )
select 'AK'
insert into @tperson ( person )
select 'AL'
insert into @tperson ( person )
select 'AM'
insert into @tperson ( person )
select 'AN'
insert into @tperson ( person )
select 'AO'
insert into @tperson ( person )
select 'AP'
insert into @tperson ( person )
select 'AR'
insert into @tperson ( person )
select 'AS'
insert into @tperson ( person )
select 'AT'
insert into @tperson ( person )
select 'AU'
insert into @tperson ( person )
select 'AW'
insert into @tperson ( person )
select 'AX'
insert into @tperson ( person )
select 'AY'
insert into @tperson ( person )
select 'AZ'
insert into @tperson ( person )
select 'BA'
insert into @tperson ( person )
select 'BB'
insert into @tperson ( person )
select 'BC'
insert into @tperson ( person )
select 'BD'
insert into @tperson ( person )
select 'BF'
insert into @tperson ( person )
select 'BE'
insert into @tperson ( person )
select 'BG'
insert into @tperson ( person )
select 'BH'
insert into @tperson ( person )
select 'BI'
update @tperson set [AA] = '21000101'
update @tperson set [AB] = '21000101' where lp >= 2
update @tperson set [AC] = '21000101' where lp >= 3
update @tperson set [AD] = '21000101' where lp >= 4
update @tperson set [AE] = '21000101' where lp >= 5
update @tperson set [AF] = '21000101' where lp >= 6
update @tperson set [AG] = '21000101' where lp >= 7
update @tperson set [AH] = '21000101' where lp >= 8
update @tperson set [AI] = '21000101' where lp >= 9
update @tperson set [AJ] = '21000101' where lp >= 10
update @tperson set [AK] = '21000101' where lp >= 11
update @tperson set [AL] = '21000101' where lp >= 12
update @tperson set [AM] = '21000101' where lp >= 13
update @tperson set [AN] = '21000101' where lp >= 14
update @tperson set [AO] = '21000101' where lp >= 15
update @tperson set [AP] = '21000101' where lp >= 16
update @tperson set [AR] = '21000101' where lp >= 17
update @tperson set [AS] = '21000101' where lp >= 18
update @tperson set [AT] = '21000101' where lp >= 19
update @tperson set [AU] = '21000101' where lp >= 20
update @tperson set [AW] = '21000101' where lp >= 21
update @tperson set [AX] = '21000101' where lp >= 22
update @tperson set [AY] = '21000101' where lp >= 23
update @tperson set [AZ] = '21000101' where lp >= 24
update @tperson set [BA] = '21000101' where lp >= 25
update @tperson set [BB] = '21000101' where lp >= 26
update @tperson set [BC] = '21000101' where lp >= 27
update @tperson set [BD] = '21000101' where lp >= 28
update @tperson set [BF] = '21000101' where lp >= 29
update @tperson set [BE] = '21000101' where lp >= 30
update @tperson set [BG] = '21000101' where lp >= 31
update @tperson set [BH] = '21000101' where lp >= 32
update @tperson set [BI] = '21000101' where lp >= 33
-- juz odbyte
update @tperson set [AB] = '20210426' where lp = 1
update @tperson set [AE] = '20210426' where lp = 4
update @tperson set [AJ] = '20210426' where lp = 8
update @tperson set [AK] = '20210426' where lp = 3
update @tperson set [AS] = '20210426' where lp = 16
update @tperson set [AT] = '20210426' where lp = 12
update @tperson set [AU] = '20210426' where lp = 17
update @tperson set [AY] = '20210426' where lp = 7
update @tperson set [AZ] = '20210426' where lp = 14
update @tperson set [BA] = '20210426' where lp = 21
update @tperson set [BB] = '20210426' where lp = 13
update @tperson set [BC] = '20210426' where lp = 6
update @tperson set [BD] = '20210426' where lp = 15
update @tperson set [BE] = '20210426' where lp = 29
update @tperson set [BG] = '20210426' where lp = 22
update @tperson set [BI] = '20210426' where lp = 32
update @tperson set [AC] = '20210510' where lp = 1
update @tperson set [AF] = '20210510' where lp = 4
update @tperson set [AZ] = '20210510' where lp = 7
SELECT * FROM @TPERSON ````
解决方法
Excel VBA 将是一个不错的选择。为每个人创建一个字符串列表,然后在此列表上创建一个 for each 循环,并在每个 for each 循环中创建一个 for each 循环,以使每个人与每个人见面。排除已经安排好的会议。
Dim Persons as list of string
Persons.add("Employee1")
Persons.add("Employee2")
Dim Person as string
Dim PersonToMeet as string
Dim Meetings as list of string
Dim MeetingsWithDates as list of string
Dim Meeting as string
Dim LastDateUsed as Datetime = "01-01-2022"
For each Person in Persons
For each PersonToMeet in Persons
If (Person != PersonToMeet) then
Meeting = Person + " meets " + PersonToMeet
if not (Meetings.contains(meeting)) then
Meetings.add(meeting)
Set LastDateUsed = DateAdd(LastDateUsed,D,1)
MeetingsWithDates.add(meeting + " at " + LastDateUsed.ToString())
end if
end if
Next
Next
最后,将 MeetingsWithDates 中的字符串打印到定义的范围内。
您需要进行一些代码调试,这只是一个粗略的例子,开箱即用。