我有两个表,姓名表和收入表。
和 yield 表
您可以在这里尝试一下:
问题:如何加入Name_ID和ID_来获得收入。我需要一个函数来检查收入表中的每个 ID 列,如果匹配则获取收入。
目标是一个如下所示的表格:
最佳答案
我建议首先在横向联接中取消收入表的透视,这样我们就可以轻松地将其与名称联接起来,并进行聚合:
select n.name_id, n.name_desc, sum(x.earnings) earnings
from earnings e
cross apply ( values
(e.id_1, e.earnings_1),
(e.id_2, e.earnings_2),
(e.id_3, e.earnings_3),
(e.id_4, e.earnings_4)
) as x(id, earnings)
inner join names n on n.name_id = x.id
group by n.name_id, n.name_desc
order by n.name_id
此方法的优点是它仅扫描表一次,而不是多次 left join
或union
s,因此它应该执行更高效并且扩展性更好。
关于sql - 如何在 SQL 中进行列搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75702983/