SQL Server数据透视-没有中间列,没有聚合



--EDIT:原始表格样本,在注释中请求

7□8.□9□10□<1□3.□>
job_id change_id 更改
1 1 5□6.□
1 2
1 3
2 4

当分隔数据有一个尾随分隔符时,这有点痛苦。这里有一个使用PARSENAME的简单解决方案。我不得不在末尾添加一个额外的空格,因为当最后一个字符是句点时,PARSENAME函数会混淆。

declare @Changes table
(
job_id int
, change_id int
, change varchar(20)
)
insert @Changes values
(1, 1, '5 6 ')
, (1, 2, '7 8 ')
, (1, 3, '9 10 ')
, (2, 4, '1 3 ')
select c.job_id
, c.change_id
, ChangeFrom = parsename(replace(c.change, ' ', '.') + ' ', 3)
, ChangeTo = parsename(replace(c.change, ' ', '.') + ' ', 2)
from @Changes c

假设三行中最后一行的Changes值为''

这对你有用吗?

SELECT 
*,
'' blank
FROM (    
SELECT 
job_id,
change_id,
changes AS changes_from,
LEAD(changes) OVER (PARTITION BY job_id, change_id ORDER BY job_id) AS changes_to
FROM jobs
) j
WHERE changes_from != '' AND changes_to != ''

输出

job_id
1112

最新更新