首页 > 解决方案 > 需要 SQL Server 中的查询逻辑

问题描述

我有这样的表product

source_item_id source_rev_id  
----------------------------
111              a_01_tz
111              b_01_tz
111              c_01_tz
222              e_02_tz
222              f_02_tz
222              g_01_tz
333              h_03_tz
444              g_04_tz

现在我想要以这种格式输出:

source_item_id source_rev_id  target_rev_id
--------------------------------------------
111              a_01_tz       AAA
111              b_01_tz       AAB
111              c_01_tz       AAC
222              e_02_tz       AAA
222              f_02_tz       AAB
222              g_01_tz       AAC
333              h_03_tz       AAA
444              g_04_tz       AAA
444              l_04_tz       AAB

对于一个source_item_id,可以有多个source_rev_id

请帮助编写查询。谢谢。

标签: sqlsql-server

解决方案


结合一个子查询来创建一个项目计数器和一个从计数器创建AAA的表达式ZZZ

SELECT    
 source_item_id, source_rev_id ,
   CHAR( (target_rev_num)/676 % 26 + 65)
 + CHAR( (target_rev_num)/26  % 26 + 65)
 + CHAR(  target_rev_num      % 26 + 65)
 AS target_rev_id
FROM (    
  SELECT source_item_id, source_rev_id ,
         ROW_NUMBER() OVER ( PARTITION BY source_item_id 
                             ORDER BY source_rev_id ) -1
         AS target_rev_num
  FROM product
) P

推荐阅读