34,593
社区成员
发帖
与我相关
我的任务
分享
IF OBJECT_ID(N'TEMPDB.DBO.#T') IS NOT NULL
DROP TABLE #T
GO
CREATE TABLE #T
(CATEGORY VARCHAR(10),
NAME VARCHAR(10))
INSERT INTO #T
SELECT 'A','1' UNION ALL
SELECT 'A','2' UNION ALL
SELECT 'A','3' UNION ALL
SELECT 'A','4' UNION ALL
SELECT 'B','5' UNION ALL
SELECT 'B','6' UNION ALL
SELECT 'B','7' UNION ALL
SELECT 'B','8' UNION ALL
SELECT 'B','9' UNION ALL
SELECT 'B','10'
DECLARE @STR VARCHAR(100)
DECLARE @SQL VARCHAR(1000)
SET @STR='(''2'',''5'',''6'',''7'',''8'',''9'',''10'')'
SET @SQL=' WITH CTE_1
AS
(SELECT * FROM #T
WHERE NAME IN '+@STR+')
,CTE_2
AS
(SELECT * FROM #T
WHERE NAME NOT IN '+@STR+')
SELECT MAX(CATEGORY) AS CATEGORY FROM CTE_1 A
WHERE NOT EXISTS (SELECT 1 FROM CTE_2 A JOIN CTE_1 B ON A.CATEGORY=B.CATEGORY)
HAVING COUNT(DISTINCT CATEGORY)=1'
EXEC(@SQL)