首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Server创建组

SQL Server创建组
EN

Stack Overflow用户
提问于 2018-11-01 19:40:43
回答 2查看 52关注 0票数 0

我有一个问题:

代码语言:javascript
复制
select maand, KENMART, minprio, _Id, rij 
from Tabelx

使用以下输出:

代码语言:javascript
复制
maand   KENMART     minprio _Id     Rij
----------------------------------------
201701  15959074    29      2921957 1   
201702  15959074    29      2921957 2  
201703  15959074    29      2921957 3  
201704  15959074    29      2921957 4  
201705  15959074    29      2921957 5  
201706  15959074    29      2921957 6  
201707  15959074    29      2921955 1  
201708  15959074    29      2921955 2  
201709  15959074    19      2921949 1  
201710  15959074    19      2921949 2  
201711  15959074    19      2921949 3   
201712  15959074    29      2921953 1  
201801  15959074    29      2921951 1  
201802  15959074    19      2921947 1  
201803  15959074    19      2921947 2  
201804  15959074    29      2921951 2  
201805  15959074    29      2921951 3  
201806  15959074    29      2921951 4  
201807  15959074    29      2921951 5  
201808  15959074    29      2921951 6  
201809  15959074    29      2921951 7  

我想要创建组,这样我的输出就像这样

代码语言:javascript
复制
maand   KENMART     minprio _Id     Rij Group     
-----------------------------------------------
201701  15959074    29      2921957 1   A   
201702  15959074    29      2921957 2   A    
201703  15959074    29      2921957 3   A    
201704  15959074    29      2921957 4   A    
201705  15959074    29      2921957 5   A    
201706  15959074    29      2921957 6   A    
201707  15959074    29      2921955 1   B   
201708  15959074    29      2921955 2   B    
201709  15959074    19      2921949 1   C    
201710  15959074    19      2921949 2   C    
201711  15959074    19      2921949 3   C   
201712  15959074    29      2921953 1   D    
201801  15959074    29      2921951 1   E    
201802  15959074    19      2921947 1   F     
201803  15959074    19      2921947 2   F    
201804  15959074    29      2921951 2   G   
201805  15959074    29      2921951 3   G    
201806  15959074    29      2921951 4   G    
201807  15959074    29      2921951 5   G    
201808  15959074    29      2921951 6   G    
201809  15959074    29      2921951 7   G    

问题出在这群人身上

代码语言:javascript
复制
201801 15959074 29 2921951 1 E

它与组G具有相同的ID,但必须是不同的组,因为月份不对齐。

我希望问题清楚了,你们能帮我解决这个问题。

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2018-11-02 18:58:26

下面是代码和它的工作情况,我已经使用了数字语句来测试,例如A是'1‘,B是'2’,以此类推。

代码语言:javascript
复制
select *,(
(case
 when KENMART = 15959074 and id=2921957 then 1 
 when KENMART = 15959074 and id=2921955 then 2
 when KENMART = 15959074 and id=2921949 then 3
 when KENMART = 15959074 and id=2921953 then 4
 when KENMART = 15959074 and id=2921947 then 5
 when KENMART = 15959074 and id=2921951 then 6

end) ) as [Group]
 from tabelx
票数 1
EN

Stack Overflow用户

发布于 2018-11-01 19:46:14

我很确定这是一个鸿沟和岛屿的问题。一种方法使用lag()和累积和:

代码语言:javascript
复制
select t.*,
       sum(case when _id = prev_id then 0 else 1 end) over (partition by kenmart order by maand) as grp
from (select t.*,
             lag(_id) over (partition by kenmart order by maand) as prev_id
      from tabelx t
     ) t;

这会将分组构建为数字,而不是字母。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53100578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档