SQL Server找到唯一的组合

时间:2016-06-13 06:59:56

标签: sql sql-server unique

我有一张桌子

rate_id  service_id
1        1
1        2
2        1
2        3
3        1
3        2
4        1
4        2
4        3 

我需要在表中找到并在rate_id中插入sevice_ids的唯一组合...但是当在另一个rate_id中重复组合时我不希望它被插入

在上面的例子中有3种组合 1,2 1,3 1,2,3

如何查询第一个表以获得唯一组合?

感谢名单!

1 个答案:

答案 0 :(得分:4)

尝试做这样的事情:

DECLARE @TempTable TABLE ([rate_id] INT, [service_id] INT)

INSERT INTO @TempTable
VALUES (1,1),(1,2),(2,1),(2,3),(3,1),(3,2),(4,1),(4,2),(4,3)

SELECT DISTINCT
    --[rate_id], --include if required
    (
    SELECT
        CAST(t2.[service_id] AS VARCHAR) + ' '
    FROM
        @TempTable t2
    WHERE
        t1.[rate_id] = t2.[rate_id]
    ORDER BY
        t2.[rate_id]
    FOR XML PATH ('')
    ) AS 'Combinations'
FROM 
    @TempTable t1

我将值放在表变量中只是为了便于测试SELECT查询。