Мне нужно, если результат суб-запроса равен нулю, тогда он заменит на «-». Я попробовал этотЗаменить результат суб-запроса в SQL
REPLACE (string_expression , string_pattern , string_replacement)
REPLACE((SELECT [StandNo] FROM [dbo].[BusStand] where id=b.[ReturnStand]), char(0), '-')
Но не решение, потому что я думаю, что это берет подзапрос, как строкового_выражения.
Решение ниже (SELECT isnull([StandNo],'-') FROM [dbo].[BusStand] where id=b.[ReturnStand])
также не сработало.
Извините, ребята, я нашел проблему не с подзапросом b.[ReturnStand]
является нулевым, потому что он выбирает нулевые строки и помещает нуль в результат. Мой запрос выглядит примерно так.
SELECT b.[Id],
b.[Date],
(SELECT [BusId]
FROM [dbo].[Bus]
WHERE id = [breakDownBusNo]) AS Bus,
(SELECT [RouteNo]
FROM [dbo].[Route]
WHERE id = bl.[routeNo]) AS [Route No],
(SELECT [StandName]
FROM [dbo].[BusStand]
WHERE id = b.[stand]) AS [Breakdown Stand],
b.[DeadKm] AS [Distance From Depo],
(SELECT COALESCE([StandNo], 0)
FROM [dbo].[BusStand]
WHERE id = b.[ReturnStand]) [On Route Stand],
COALESCE([ReturnKm], 0) AS [Distance of on route place],
(b.[DeadKm] + COALESCE([ReturnKm], 0)) AS Total
FROM [dbo].[BreakDown] AS b
INNER JOIN [dbo].[Bus Log] AS bl
ON b.BusLogId = bl.Id
INNER JOIN [dbo].[DriverAttendance] AS da
ON da.Id = b.DrvrAttnDnceIdLog
Пожалуйста, не входите в сложность запроса. Мне просто нужно показать, где я его использую. Теперь, как я могу заменить null на «-» на стенде маршрута.
вы можете поделиться им на sqlfiddle –