在 Microsoft SQL 环境中,我有以下情况:
我试图基于一个子项的id获取父项。如果查询的id是最后一个父项,则应仅返回最后一项。
例如:
如果我查询:id = '-5004',它应该返回('-5004', '-5003', null), ('-5003', '-5002', '50'), ('-5002', '-5001', null), ('-5001', '0', null)。
如果我查询id = '-5007',它应该返回('-5007', '0', null)。
如果能按照树形结构列出查询的id和其余的内容,那就太棒了。
我尝试过几种不同的CTE方法,但不幸的是都没有成功。所以我在这里寻求帮助或想法。
先谢谢了。
CREATE TABLE grps
(
[id] varchar(50),
[parentid] varchar(50),
[value] varchar(50)
);
INSERT INTO grps
([id], [parentid], [value])
VALUES
('-5001', '0', null),
('-5002', '-5001', null),
('-5003', '-5002', '50'),
('-5004', '-5003', null),
('-5005', '0', null),
('-5006', '0', null),
('-5007', '0', null),
('-5008', '-5006', null);
我试图基于一个子项的id获取父项。如果查询的id是最后一个父项,则应仅返回最后一项。
例如:
如果我查询:id = '-5004',它应该返回('-5004', '-5003', null), ('-5003', '-5002', '50'), ('-5002', '-5001', null), ('-5001', '0', null)。
如果我查询id = '-5007',它应该返回('-5007', '0', null)。
如果能按照树形结构列出查询的id和其余的内容,那就太棒了。
我尝试过几种不同的CTE方法,但不幸的是都没有成功。所以我在这里寻求帮助或想法。
先谢谢了。