我有一个存储如下值的表:
Name CategoryId
Gaurav 4,6
Amit 2,4
Ajay 6,2
2,4,6(这是名称出现在其主表中的类别的ID)
像这样的主类表。
Id CategoryName
2 Motor
4 Scooter
6 Car
我想首先从表中获取所有记录,并想要类别名称( 不是类别ID)。
Name CategoryName
Gaurav Scooter, Car
Amit Motor, Scooter
Ajay Car, Motor
如何通过存储过程完成...
答案 0 :(得分:1)
这样的事可能有用:
with peopleCategory as
(
select p.Name
, c.CategoryName
from people p
inner join category c on charindex(',' + cast(c.Id as varchar(100)) + ','
, ',' + p.CategoryId + ',') > 0
)
select p.Name
, CategoryName = stuff
(
(
select ',' + pc.CategoryName
from peopleCategory pc
where p.Name = pc.Name
order by pc.CategoryName
for xml path('')
)
, 1
, 1
, ''
)
from people p
order by Name
然而,你可以更多,更多更好地将这些表规范化为一个合理的结构,这样你就可以在没有上述要求的复杂性的情况下查询它们。