表A:
助力型
10 .再分摊费用a
10 .
10 .
11 .再发成本
11 .再贴水制
第11次再保险合约
表B
投标名称
10 .再接再税ab
10 .B/C.
10 .再发光盘
11 .中转站
11 .
11 ._
结果应该是
援助类型名称
10
10
10
11 .初级商业银行-商业银行
11
11
您能帮我做一下SQL查询吗?
发布于 2019-04-27 17:53:33
您正在尝试对齐两个表,但没有键。您可以使用row_number()生成密钥,然后进行匹配。请注意,除非有另一列指定排序,否则不能控制两个表中的哪些值匹配。
所以:
select a.id, a.name, b.name
from (select a.*, row_number() over (partition by aid order by name) as seqnum
from a
) a join
(select b.*, row_number() over (partition by bid order by name) as seqnum
from b
) b
on a.aid = b.bid and a.seqnum = b.seqnum;发布于 2019-04-27 17:56:43
您可以通过这样的连接来完成它:
select a.aid, a.type, b.name
from TableA a inner join TableB b
on b.bid = a.aid and b.name like concat(a.type, '%')这将为您提供TableA中的6行,name从TableB作为3d列。
见演示。
结果:
| aid | type | name |
| --- | ---- | ---- |
| 10 | a | ab |
| 10 | b | bc |
| 10 | c | cd |
| 11 | abc | abcd |
| 11 | bcd | bcde |
| 11 | cde | cdef |https://stackoverflow.com/questions/55883305
复制相似问题