根据多列创建序列号

时间:2016-11-13 11:13:28

标签: sql sql-server sql-server-2008

我有以下数据

enter image description here

我想根据Region,Country,Store Type和Location列创建最后一列所示的索引级别。 因此,Region列对于每个新区域都有自己的序列号,即' APAC为1,然后EMEA为2'类似地,对于其他列(国家,商店类型,位置)也是如此。 我试图使用分区来获得结果,但我无法得到理想的结果。

2 个答案:

答案 0 :(得分:3)

使用dense_rank()窗口功能。

select *,
       concat(
        dense_rank() over(order by Region), ',',
        dense_rank() over(partition by Region order by Country), ',',
        dense_rank() over(partition by Region, Country order by [Store Type]), ',',
        dense_rank() over(partition by Region, Country, [Store Type] order by Location)
       ) as [Index Level]
  from Tab

答案 1 :(得分:0)

使用简单的CONCAT函数(https://msdn.microsoft.com/en-us/library/hh231515.aspx)或+运算符将所有值连接在一起,并用逗号分隔所有值。