我需要帮助查找和分类每个不同密钥的顺序模式。
根据我的数据,我需要创建一个新表,其中包含密钥和属于该密钥的模式标识符。
从下面的示例中,模式如下:
键#1和#3的值为1,2和3.键#3的值为8, 当密钥I.E(1,2,3)I存在明显的模式时 需要在表上为键#和特定的键创建一个条目 模式(1,2,3)
数据:
key value
1 1
1 2
1 3
2 8
2 9
2 10
3 1
3 2
3 3
预期产出:
key pattern
1 1
2 2
3 1
小提琴: http://sqlfiddle.com/#!6/4fe39
示例表:
CREATE TABLE yourtable
([key] int, [value] int)
;
INSERT INTO yourtable
([key], [value])
VALUES
(1, 1),
(1, 2),
(1, 3),
(2, 8),
(2, 9),
(2, 10),
(3, 1),
(3, 2),
(3, 3)
;
答案 0 :(得分:1)
您可以通过多种方式将值连接在一起。 SQL Server中的传统方法使用for xml
:
select k.key,
stuff( (select ',' + cast(t.id as varchar(255))
from t
where k.key = t.key
for xml path ('')
order by t.id
), 1, 1, ''
) as ids
from (select distinct key from t) k;
您可以使用CTE /子查询将其转换为唯一编号:
with cte as (
select k.key,
stuff( (select ',' + cast(t.id as varchar(255))
from t
where k.key = t.key
for xml path ('')
order by t.id
), 1, 1, ''
) as ids
from (select distinct key from t) k
)
select cte.*, dense_rank() over (order by ids) as ids_id
from cte;