22,209
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE [dbo].[User]( --员工表
[UserID] [varchar](50) NOT NULL, --员工ID
[UserName] [varchar](50) NULL, --员工姓名
[UserOrg] [varchar](50) NULL) --部门
CREATE TABLE [dbo].[UserAssess]( --评价表
[AutoID] [varchar](50) NOT NULL, --自增长ID
[UserID_A] [varchar](50) NOT NULL, --评价对象A
[UserID_B] [varchar](50) NOT NULL, --评价对象B (A,B不能相同)
[WorkID] [varchar](50) NOT NULL, --投票人
[Result] [varchar](50) NULL) --评价结果
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('AA','甲','工程部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('BB','乙','工程部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('CC','丙','工程部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('DD','丁','工程部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('EE','王','技术部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('FF','李','技术部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('HH','张','技术部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('II','刘','技术部')
CREATE TABLE [dbo].[User]( --员工表
[UserID] [varchar](50) NOT NULL, --员工ID
[UserName] [varchar](50) NULL, --员工姓名
[UserOrg] [varchar](50) NULL) --部门
CREATE TABLE [dbo].[UserAssess]( --评价表
[AutoID] [varchar](50) NOT NULL, --自增长ID
[UserID_A] [varchar](50) NOT NULL, --评价对象A
[UserID_B] [varchar](50) NOT NULL, --评价对象B (A,B不能相同)
[WorkID] [varchar](50) NOT NULL, --投票人
[Result] [varchar](50) NULL) --评价结果
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('AA','甲','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('BB','乙','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('CC','丙','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('DD','丁','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('EE','王','技术部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('FF','李','技术部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('HH','张','技术部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('II','刘','技术部')
GO
Create Proc P_Proc
AS
Begin
SET NOCOUNT ON;
Create Table #Demo(P1 Varchar(50),P2 Varchar(50) )
DECLARE @USERID VARCHAR(50)
Declare CUS CURSOR FOR SELECT UserID FROM [User] ORDER BY UserID
OPEN CUS
FETCH NEXT FROM CUS INTO @USERID
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #Demo
SELECT @USERID,UserID
FROM [User] T1
WHERE UserID <> @USERID AND
NOT EXISTS(SELECT TOP 1 1 FROM #Demo WHERE (P1=T1.UserID And P2=@USERID) OR (P2=T1.UserID And P1=@USERID) )
ORDER BY T1.UserID
FETCH NEXT FROM CUS INTO @USERID
END
CLOSE CUS
DEALLOCATE CUS
Insert Into UserAssess
SELECT '自增长ID', T2.P1,T2.P2,T1.UserID,'结果' FROM [User] T1
Inner Join #Demo T2 On 1=1
Order by T1.UserID,T2.P1
Select * From UserAssess
DROP TABLE #DEMO
SET NOCOUNT OFF;
End
go
exec P_Proc
GO
Drop Proc P_Proc
Drop Table [User]
Drop Table UserAssess
CREATE TABLE [dbo].[User]( --员工表
[UserID] [varchar](50) NOT NULL, --员工ID
[UserName] [varchar](50) NULL, --员工姓名
[UserOrg] [varchar](50) NULL) --部门
CREATE TABLE [dbo].[UserAssess]( --评价表
[AutoID] [varchar](50) NOT NULL, --自增长ID
[UserID_A] [varchar](50) NOT NULL, --评价对象A
[UserID_B] [varchar](50) NOT NULL, --评价对象B (A,B不能相同)
[WorkID] [varchar](50) NOT NULL, --投票人
[Result] [varchar](50) NULL) --评价结果
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('AA','甲','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('BB','乙','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('CC','丙','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('DD','丁','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('EE','王','技术部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('FF','李','技术部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('HH','张','技术部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('II','刘','技术部')
select
a.UserName+'->'TT,
b.UserName+'and'+c.UserName as 比较结果
from
[User] a
inner join
[User] b
on
a.UserID<>b.UserID
and a.UserOrg=b.UserOrg
inner join
[User] c
on
a.UserID<>c.UserID
and a.UserOrg=c.UserOrg
where
a.UserID<>b.UserID
and a.UserID<>c.UserID
and b.UserID<>c.UserID
/*
比较结果
甲->丙and乙
甲->丁and乙
甲->乙and丙
甲->丁and丙
甲->乙and丁
甲->丙and丁
乙->丙and甲
乙->丁and甲
乙->甲and丙
乙->丁and丙
乙->甲and丁
乙->丙and丁
丙->乙and甲
丙->丁and甲
丙->甲and乙
丙->丁and乙
丙->甲and丁
丙->乙and丁
丁->乙and甲
丁->丙and甲
丁->甲and乙
丁->丙and乙
丁->甲and丙
丁->乙and丙
王->张and李
王->刘and李
王->李and张
王->刘and张
王->李and刘
王->张and刘
李->张and王
李->刘and王
李->王and张
李->刘and张
李->王and刘
李->张and刘
张->李and王
张->刘and王
张->王and李
张->刘and李
张->王and刘
张->李and刘
刘->李and王
刘->张and王
刘->王and李
刘->张and李
刘->王and张
刘->李and张
*/
--我还以为同部门。
;with cte as
(
select a.id,a.username Am,b.username Bm,rid = row_number() over (order by getdate())
from sys_user a join sys_user b on a.userid <> b.userid
)
select e.username + ':' + t.am + ' To ' + t.bm
from cte t join Sys_User e on t.id = e.id
where not exists (select 1 from cte where am = t.bm and bm = t.am and rid > t.rid)
order by e.id
/**************************
甲:甲 To 丙
甲:甲 To 丁
甲:甲 To 李
甲:甲 To 刘
甲:甲 To 王
甲:甲 To 乙
甲:甲 To 张
乙:乙 To 丙
乙:乙 To 丁
乙:乙 To 李
乙:乙 To 刘
乙:乙 To 王
乙:乙 To 张
丙:丙 To 丁
丙:丙 To 李
丙:丙 To 刘
丙:丙 To 王
丙:丙 To 张
丁:丁 To 李
丁:丁 To 刘
丁:丁 To 王
丁:丁 To 张
王:王 To 李
王:王 To 刘
王:王 To 张
李:李 To 刘
李:李 To 张
张:张 To 刘
(28 行受影响)
CREATE TABLE [dbo].Sys_User( --员工表
[ID] int identity(1,1),
[UserID] [varchar](50) NOT NULL, --员工ID
[UserName] [varchar](50) NULL, --员工姓名
[UserOrg] [varchar](50) NULL) --部门
CREATE TABLE [dbo].[UserAssess]( --评价表
[AutoID] [varchar](50) NOT NULL, --自增长ID
[UserID_A] [varchar](50) NOT NULL, --评价对象A
[UserID_B] [varchar](50) NOT NULL, --评价对象B (A,B不能相同)
[WorkID] [varchar](50) NOT NULL, --投票人
[Result] [varchar](50) NULL) --评价结果
go
set nocount on
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('AA','甲','工程部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('BB','乙','工程部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('CC','丙','工程部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('DD','丁','工程部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('EE','王','技术部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('FF','李','技术部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('HH','张','技术部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('II','刘','技术部')
set nocount off
go
;with cte as
(
select a.id,a.username Am,b.username Bm,rid = row_number() over (order by getdate())
from sys_user a join sys_user b on a.userorg = b.userorg and a.userid <> b.userid
)
select e.username + ':' + t.am + ' To ' + t.bm
from cte t join Sys_User e on t.id = e.id
where not exists (select 1 from cte where am = t.bm and bm = t.am and rid > t.rid)
order by e.id
drop table Sys_User,[UserAssess]
/***************************
甲:甲 To 丁
甲:甲 To 乙
甲:甲 To 丙
乙:乙 To 丙
乙:乙 To 丁
丙:丙 To 丁
王:王 To 李
王:王 To 张
王:王 To 刘
李:李 To 刘
李:李 To 张
张:张 To 刘
(12 行受影响)
CREATE TABLE [dbo].[User]( --员工表
[UserID] [varchar](50) NOT NULL, --员工ID
[UserName] [varchar](50) NULL, --员工姓名
[UserOrg] [varchar](50) NULL) --部门
CREATE TABLE [dbo].[UserAssess]( --评价表
[AutoID] [varchar](50) NOT NULL, --自增长ID
[UserID_A] [varchar](50) NOT NULL, --评价对象A
[UserID_B] [varchar](50) NOT NULL, --评价对象B (A,B不能相同)
[WorkID] [varchar](50) NOT NULL, --投票人
[Result] [varchar](50) NULL) --评价结果
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('AA','甲','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('BB','乙','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('CC','丙','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('DD','丁','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('EE','王','技术部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('FF','李','技术部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('HH','张','技术部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('II','刘','技术部')
select
a.UserName+'->'+b.UserName+'and'+c.UserName as 比较结果
from
[User] a
inner join
[User] b
on
a.UserID<>b.UserID
and a.UserOrg=b.UserOrg
inner join
[User] c
on
a.UserID<>c.UserID
and a.UserOrg=c.UserOrg
where
a.UserID<>b.UserID
and a.UserID<c.UserID
/*
比较结果
甲->乙and乙
甲->丙and乙
甲->丁and乙
甲->乙and丙
甲->丙and丙
甲->丁and丙
甲->乙and丁
甲->丙and丁
甲->丁and丁
乙->甲and丙
乙->丙and丙
乙->丁and丙
乙->甲and丁
乙->丙and丁
乙->丁and丁
丙->甲and丁
丙->乙and丁
丙->丁and丁
王->李and李
王->张and李
王->刘and李
王->李and张
王->张and张
王->刘and张
王->李and刘
王->张and刘
王->刘and刘
李->王and张
李->张and张
李->刘and张
李->王and刘
李->张and刘
李->刘and刘
张->王and刘
张->李and刘
张->刘and刘
*/
SELECT c.UserName+'→'+a.UserName+b.UserName AS x FROM [User] a,[User] b,[User] c
WHERE a.UserOrg=b.UserOrg
AND a.UserOrg=c.UserOrg
AND a.UserName<>b.UserName
ORDER BY x
/*
x
--------------------------------------------------------------------------------------------------------------------------------------------------------
丙→丙丁
丙→丙甲
丙→丙乙
丙→丁丙
丙→丁甲
丙→丁乙
丙→甲丙
丙→甲丁
丙→甲乙
丙→乙丙
丙→乙丁
丙→乙甲
丁→丙丁
丁→丙甲
丁→丙乙
丁→丁丙
丁→丁甲
丁→丁乙
丁→甲丙
丁→甲丁
丁→甲乙
丁→乙丙
丁→乙丁
丁→乙甲
甲→丙丁
甲→丙甲
甲→丙乙
甲→丁丙
甲→丁甲
甲→丁乙
甲→甲丙
甲→甲丁
甲→甲乙
甲→乙丙
甲→乙丁
甲→乙甲
李→李刘
李→李王
李→李张
李→刘李
李→刘王
李→刘张
李→王李
李→王刘
李→王张
李→张李
李→张刘
李→张王
刘→李刘
刘→李王
刘→李张
刘→刘李
刘→刘王
刘→刘张
刘→王李
刘→王刘
刘→王张
刘→张李
刘→张刘
刘→张王
王→李刘
王→李王
王→李张
王→刘李
王→刘王
王→刘张
王→王李
王→王刘
王→王张
王→张李
王→张刘
王→张王
乙→丙丁
乙→丙甲
乙→丙乙
乙→丁丙
乙→丁甲
乙→丁乙
乙→甲丙
乙→甲丁
乙→甲乙
乙→乙丙
乙→乙丁
乙→乙甲
张→李刘
张→李王
张→李张
张→刘李
张→刘王
张→刘张
张→王李
张→王刘
张→王张
张→张李
张→张刘
张→张王
(96 行受影响)
*/
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('AA','甲','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('BB','乙','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('CC','丙','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('DD','丁','工程部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('EE','王','技术部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('FF','李','技术部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('HH','张','技术部')
INSERT INTO [User](UserID,UserName,UserOrg) VALUES('II','刘','技术部')
SELECT a.UserName+b.UserName FROM [User] a,[User] b
WHERE a.UserOrg=b.UserOrg AND a.UserName<>b.UserName
ORDER BY a.UserName
CREATE TABLE [dbo].Sys_User( --员工表
[ID] int identity(1,1),
[UserID] [varchar](50) NOT NULL, --员工ID
[UserName] [varchar](50) NULL, --员工姓名
[UserOrg] [varchar](50) NULL) --部门
CREATE TABLE [dbo].[UserAssess]( --评价表
[AutoID] [varchar](50) NOT NULL, --自增长ID
[UserID_A] [varchar](50) NOT NULL, --评价对象A
[UserID_B] [varchar](50) NOT NULL, --评价对象B (A,B不能相同)
[WorkID] [varchar](50) NOT NULL, --投票人
[Result] [varchar](50) NULL) --评价结果
go
set nocount on
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('AA','甲','工程部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('BB','乙','工程部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('CC','丙','工程部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('DD','丁','工程部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('EE','王','技术部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('FF','李','技术部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('HH','张','技术部')
INSERT INTO Sys_User(UserID,UserName,UserOrg) VALUES('II','刘','技术部')
set nocount off
go
;with cte as
(
select a.id,a.UserOrg,a.username Am,b.username Bm,rid = row_number() over (order by getdate())
from sys_user a join sys_user b on a.userorg = b.userorg and a.userid <> b.userid
)
select e.username + ':' + t.am + ' To ' + t.bm
from Sys_User e
join (select * from cte t
where not exists (select 1 from cte where am = t.bm and bm = t.am and rid > t.rid)
) t on t.UserOrg = e.UserOrg
order by e.id
drop table Sys_User,[UserAssess]
/***************************
甲:甲 To 乙
甲:甲 To 丙
甲:乙 To 丙
甲:甲 To 丁
甲:丙 To 丁
甲:乙 To 丁
乙:乙 To 丁
乙:丙 To 丁
乙:甲 To 丁
乙:乙 To 丙
乙:甲 To 丙
乙:甲 To 乙
丙:甲 To 乙
丙:甲 To 丙
丙:乙 To 丙
丙:甲 To 丁
丙:丙 To 丁
丙:乙 To 丁
丁:乙 To 丁
丁:丙 To 丁
丁:甲 To 丁
丁:乙 To 丙
丁:甲 To 丙
丁:甲 To 乙
王:王 To 李
王:王 To 张
王:李 To 张
王:王 To 刘
王:李 To 刘
王:张 To 刘
李:张 To 刘
李:李 To 刘
李:王 To 刘
李:李 To 张
李:王 To 张
李:王 To 李
张:王 To 李
张:王 To 张
张:李 To 张
张:王 To 刘
张:李 To 刘
张:张 To 刘
刘:张 To 刘
刘:李 To 刘
刘:王 To 刘
刘:李 To 张
刘:王 To 张
刘:王 To 李
(48 行受影响)