27,580
社区成员
发帖
与我相关
我的任务
分享
DECLARE @TB TABLE([Tid] VARCHAR(2))
INSERT @TB
SELECT '01' UNION ALL
SELECT '01' UNION ALL
SELECT '02' UNION ALL
SELECT '02' UNION ALL
SELECT '03' UNION ALL
SELECT '03'
SELECT DISTINCT (T1.TID+T.TID) TID FROM @TB T1 CROSS JOIN (SELECT DISTINCT TOP 2 * FROM @TB)AS T
--2000
DECLARE @TB TABLE([Tid] VARCHAR(2))
INSERT @TB
SELECT '01' UNION ALL
SELECT '01' UNION ALL
SELECT '02' UNION ALL
SELECT '02' UNION ALL
SELECT '03' UNION ALL
SELECT '03'
SELECT *,ID=IDENTITY(int,1,1) INTO # FROM @TB ORDER BY Tid
SELECT Tid,Did=Tid+RIGHT('00'+RTRIM(SEQ),2)
FROM (
SELECT *,SEQ=ID-(SELECT COUNT(*) FROM # WHERE Tid<TA.Tid)
FROM # AS TA
) TB
DROP TABLE #
/*
Tid Did
---- ----
01 0101
01 0102
02 0201
02 0202
03 0301
03 0302
*/
SELECT TID + RIGHT('00' + RID,2) AS DID
SELECT ROW_NUMBER() OVER(PARTITION BY TID ORDER BY TID) AS RID, *
FROM TABLE1 T
DECLARE @TB TABLE([Tid] VARCHAR(2))
INSERT @TB
SELECT '01' UNION ALL
SELECT '01' UNION ALL
SELECT '02' UNION ALL
SELECT '02' UNION ALL
SELECT '03' UNION ALL
SELECT '03'
SELECT Tid,Did=Tid+RIGHT('00'+RTRIM(SEQ),2)
FROM (
SELECT *,SEQ=ROW_NUMBER() OVER (PARTITION BY Tid ORDER BY GETDATE())
FROM @TB
) T
/*
Tid Did
---- ----
01 0101
01 0102
02 0201
02 0202
03 0301
03 0302
*/