根据某些共享列创建标识符/计数器,并根据其他列进行分隔
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据某些共享列创建标识符/计数器,并根据其他列进行分隔相关的知识,希望对你有一定的参考价值。
我想基于共享列创建计算列,但计算列应“重新启动”并根据第三列进行分组。
如下图所示,第1列包含属于某个实体(某种ID)的信息。第2列包含存在的记录数(1,2和3)。第3列包含实际数据(A,B或C),但三个不同记录之间可以存在相同的值(由第2列分隔)。
我之前的过程在这个thread中进行了讨论,但随着我的进展,我相信它最初没有正确解释。
有没有办法创造我想要的结果?
答案
使用windowing function DENSE_RANK()
和OVER()
子句:
DECLARE @tbl TABLE(Column1 INT,Column2 INT,Column3 VARCHAR(100));
INSERT INTO @tbl VALUES(1,1,'A')
,(1,2,'A')
,(1,3,'B')
,(2,1,'A')
,(2,2,'A')
,(2,3,'B')
,(3,1,'A')
,(3,2,'B')
,(3,3,'V');
SELECT *
,DENSE_RANK() OVER(PARTITION BY Column1 ORDER BY Column3) AS ComputedColumn
FROM @tbl;
PARTITION BY
将重新启动column1
中每个新值的计数器,而ORDER BY
定义排名。
提示:不要粘贴图片!
对于您的下一个问题,请按照我的示例创建一个独立的示例来重现您的问题并添加您自己尝试过的代码。
以上是关于根据某些共享列创建标识符/计数器,并根据其他列进行分隔的主要内容,如果未能解决你的问题,请参考以下文章