我有这样的临时表结构@temp2
route total driverID
------------------------
10B 300
7B 400
并且要添加driverID
列,其结果类似于5555, 68989
为此,我使用游标来循环另一个如下所示的表
driverID routeNo
-------------------
5555 10B
68989 10B
72000 7B
这里是代码
declare @driverID varchar(max)
declare @routeNew varchar(20)
DECLARE brand_cursor CURSOR FOR
select distinct driver_id, route_number from [dbcwl].[dbo].[collection_deduction_summary]
where YEAR(trans_date) = @year
and MONTH(trans_date) = @month
and route_number in (select actual_route from [dbcwl].[dbo].[livedispatchingdata_pmhs_daily_summary] where status = 'OK' and YEAR(trans_date) = @year AND month(trans_date) = @month )
and vehicle_id in (select vehicle_id from [dbcwl].[dbo].[livedispatchingdata_pmhs_daily_summary] where status = 'OK' and YEAR(trans_date) = @year AND month(trans_date) = @month )
group by route_number, driver_id
OPEN brand_cursor
FETCH NEXT FROM brand_cursor
INTO @driverID, @routeNew
WHILE @@FETCH_STATUS = 0
BEGIN
--update @temp2
update @temp2 set driverID += ','+ @driverID where routeNo = @routeNew;
FETCH NEXT FROM brand_cursor
INTO @driverID, @routeNew
END
CLOSE brand_cursor;
DEALLOCATE brand_cursor;
不幸的是,我得到的driverID
列为空
并且希望最终的临时表看起来像这样:
route total driverID
------------------------
10B 300 5555,68989
7B 400 72000
SELECT routeNo, driverID =
STUFF((SELECT DISTINCT ', ' + CAST(driverID AS NVARCHAR(100))
FROM #A b
WHERE b.routeNo = a.routeNo
FOR XML PATH('')), 1, 2, '')
FROM #A a
GROUP BY routeNo