【发布时间】:2018-03-15 15:47:17
【问题描述】:
您能否帮助从下面的输入表中生成输出表(提供了屏幕截图。基本上我需要根据每行中的 pid 从 cn 中获取 pcn。我使用了 case when 语句,但数据是巨大的,这不是一种可持续的方式,因此自我加入会很好。但我没有从下面的自我加入查询中得到预期的输出
这是我尝试的自联接查询。
select b.id, b.cn, a.pid, a.cn as pcn
from (
(select pid,cn from categories) a
left join (select id,cn from categories) b on a.pid=b.id
)
这是我用来为某些数据导出数据的case语句
select id,cn,pid,
case
when pid is NULL then cn
when pid=1 then (select cn from categories where id=1)
when pid=13 then (select cn from categories where id=13)
END as pcn
from categories
【问题讨论】:
-
请不要使用图片,并将您的查询放在问题中,而不是在评论中:)
-
不相关,但是:您不需要嵌套子选择来连接表。您的第一个查询可以简化为
from categories a left join categories b on a.pid = b.id -
您使用的是哪个DBMS? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加标签
postgresql、oracle、sql-server、db2、... -
是的,你是对的..我应该避免从表中选择子来加入它。我还为数据库产品添加了标签。
-
@Liora Haydont:我无法以表格格式粘贴数据,这就是添加图像的原因。但是查询已添加到问题本身。谢谢
标签: sql-server join self