首页 > 解决方案 > 使用另一个表从一个表中选择内容

问题描述

我有两张桌子

A1 A2
一种 2
b 3
A3 A4
一种 第 1 行
一种 第 2 行
一种 第 3 行
一种 第 4 行
b 第 5 行
b 第 6 行
b 第 7 行
b 第 8 行
b 第 9 行

我想要类似的东西

A3 A4
一种 第 1 行
一种 第 2 行
b 第 5 行
b 第 6 行
b 第 7 行

第一个表中的第二列应该是我想从下一个表中的每个组中获得的记录数我试过的地方存在它不起作用你能帮帮我吗?!?

标签: sqltsqlselectsubquery

解决方案


我会ROW_NUMBER在第二张桌子上使用这里。然后加入第一个表,只保留行号不超过生成的行号值的记录。

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY A3 ORDER BY A4) rn
    FROM Table2
)

SELECT t2.A3, t2.A4
FROM cte t2
INNER JOIN Table1 t1
    ON t2.A3 = t1.A1
WHERE
    t2.rn <= t1.A2;

下面演示链接的屏幕截图

演示

请注意,最好在第二个表中有一个更合适的序列列,以确定在那里选择记录的顺序。


推荐阅读