表Vehicle的示例数据
ID BODY TYPE Litre
1 AAA 1.5
2 BBB; CCC 1.9
3 DDD 1.9
4 EEE; FFF; GGG 1.8
5 GGG 1.8
我需要一个Select Distinct语句,该语句将把以下结果带入查询,因此我们在选择所有唯一值的同时还要按分割;也一样
BODY TYPE
AAA
BBB
CCC
DDD
EEE
FFF
GGG
我看过类似的问题,其中包含各种功能,但我希望结果可以显示为查询。我已尝试根据我的情况调整以下建议
最佳答案
您实际上应该以规范化形式存储数据。也就是说,试试这个
;with c as (
select bodytype, 0 as start, CHARINDEX(';', bodytype) as sep
from Vehicle
where litre=1.9
union all
select bodytype, sep, CHARINDEX(';', bodytype, sep+1) from c
where sep>0
)
select distinct LTRIM(RTRIM(SUBSTRING(bodytype,start+1,chars))) as [BodyType]
from
(
select *, Case sep when 0 then LEN(bodytype) else sep-start-1 end as chars
from c
) v
关于sql - SQL选择不同,但包含单独的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18249363/