比较头疼的sql语句
维护记录
港389              油压上限值 16.00修改为:  3.00           |   李雷  
港65               油压上限值 16.00修改为:  3.00
港356               油压上限值 16.00修改为:  3.00          |   李雷          红香
港356               油压上限值 16.00修改为:  3.00          |   范红          红香
港356               油压下限值  1.00修改为:  0.00          |   李雷          李伟
现在想实现的结果是
维护记录                                                     维护人         审核人
港356               油压上限值 16.00修改为:  3.00             李雷          红香
港356               油压上限值 16.00修改为:  3.00             范红          红香
港356               油压下限值  1.00修改为:  0.00             李雷          李伟
维护记录是一个字段想实现变成三个字段 ,有的记录里面有竖杠杠有 的没有竖杠杠,只要有竖杠杠的后面就有维护人,单不一定有审核人。
请问大家这个怎样给它实现查询完后出来三个字段
------解决方案--------------------审核人是按照空格分的吗?
------解决方案--------------------
--准备测试数据
create table a_R(WR nvarchar(100))
insert into a_R
values('港389 油压上限值 16.00修改为: 3.00 | 李雷  ')
insert into a_R
values('港65 油压上限值 16.00修改为: 3.00')
insert into a_R
values('港356 油压上限值 16.00修改为: 3.00 | 李雷 红香')
insert into a_R
values('港356 油压上限值 16.00修改为: 3.00 | 范红 红香')
insert into a_R
values('港356 油压下限值 1.00修改为: 0.00 | 李雷 李伟')
--实现你要的查询结果
select WR, (case when WR like '% | %' then Left(WR,Charindex(' | ',WR,1)-1) else WR end) as [维护记录],  
(case when WR like '% | %' then (case when Substring(WR, Charindex(' | ',WR,1)+3, Len(WR)-Charindex(' | ',WR,1)-2) like '% %' then Substring(WR,Charindex(' | ',WR,1)+3,Charindex(' ',Substring(WR,Charindex(' | ',WR,1)+3,Len(WR)-Charindex(' | ',WR,1)-2),1)-1) else Substring(WR, Charindex(' | ',WR,1)+3, Len(WR)-Charindex(' | ',WR,1)-2) end) else '' end) as [维护人],
(case when WR like '% | %' then (case when Substring(WR, Charindex(' | ',WR,1)+3, Len(WR)-Charindex(' | ',WR,1)-2) like '% %' then Substring(WR,Charindex(' | ',WR,1)+2+Charindex(' ',Substring(WR,Charindex(' | ',WR,1)+3,Len(WR)-Charindex(' | ',WR,1)-2),1),LEN(WR)-Charindex(' | ',WR,1)-1-Charindex(' ',Substring(WR,Charindex(' | ',WR,1)+3,Len(WR)-Charindex(' | ',WR,1)-2),1)) else '' end) else '' end) as [审核人]
from a_R