在两个表之间组合行数和分组方式

uinbv5nw  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(333)

我有两个表,我正试图将行号应用到其中,对于每个组,表2中的行号将从表1的结束处开始。
表1(按预期工作):

SELECT DISTINCT Product, Item, ROW_NUMBER() OVER (PARTITION BY Product ORDER BY Product, Item)
FROM Table1 (NOLOCK)

表2:期望输出:

当前代码:

SELECT DISTINCT Product, Item, ROW_NUMBER() OVER (PARTITION BY Product ORDER BY Product, Item)+(SELECT COUNT(*) FROM Table1)
FROM Table2 (NOLOCK)

2cmtqfgy

2cmtqfgy1#

一种可能的方法是以下声明:
table:

CREATE TABLE Table1 (Product varchar(1), Item int)
INSERT INTO Table1 (Product, Item)
VALUES ('A', 1), ('A', 2), ('B', 1), ('B', 2), ('B', 3)

CREATE TABLE Table2 (Product varchar(1), Item int)
INSERT INTO Table2 (Product, Item)
VALUES ('A', 1), ('A', 2), ('B', 1)

声明:

SELECT 
   Product, 
   Item, 
   ROW_NUMBER() OVER (PARTITION BY Product ORDER BY Item) AS Rn
FROM Table1

SELECT 
  t2.Product, 
  t2.Item, 
  ROW_NUMBER() OVER (PARTITION BY t2.Product ORDER BY t2.Item) + t1.[Count] AS Rn
FROM Table2 t2
LEFT JOIN (
   SELECT Product, COUNT(*) AS [Count]
   FROM Table1 
   GROUP BY Product
) t1 ON t2.Product = t1.Product

结果:

Product Item  Rn
A       1     1
A       2     2
B       1     1
B       2     2
B       3     3

Product Item Rn
A       1    3
A       2    4
B       1    4

相关问题