я хочу выбрать из таблицы с именем RMA
(упрощенно):
idRMA| RMA_Number
-----------------------
1 RMA0006701
2 RMA0006730
3 RMA0006736
4 RMA0006739
5 RMA0006742
Существует таблица соединений между RMA
и tdefSymptomCode
, называемая trelRMA_SymptomCode]: [111336280] полнота, это
tdefSymptomCode
:
idSymptomCode SymptomCodeNumber SymptomCodeName
1 0000 Audio problem
2 0100 SIM problem
3 0200 Appearance problem
4 0300 Network problem
5 0500 On/Off problem
каждый RMA может иметь 0-5 SymptomCode. Как я могу объединить SymptomCodeNumber с разделителем вроде ':' вместе в скалярной функции, чтобы в результате я получил только одно значение varchar.
Что-то вроде этого (где getRmaSymptomCodes
- SVF):
SELECT idRMA, RMA_Number, dbo.getRmaSymptomCodes(idRMA,':') AS Symptoms FROM RMA
Это могут быть симптомы 3 разных RMA (у всех есть ровно один симптом):
RMA_Number SymptomCodeNumber
RMA0004823 0100
RMA0004823 0200
RMA0000083 0300
RMA0000084 0300
RMA0000084 0400
Это должно быть объединено как:
RMA0004823 0100:0200
RMA0000083 0300
RMA0000084 0300:0400
Заранее спасибо
Обновление : Спасибо всем, что я создал эта рабочая функция
CREATE FUNCTION [dbo].[getRmaSymptomCodes]
(
@idRMA int,
@delimiter varchar(5)
)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @Codes VARCHAR(8000)
SELECT @Codes = COALESCE(@Codes + @delimiter, '') + tdefSymptomCode.SymptomCodeNumber
FROM RMA INNER JOIN
trelRMA_SymptomCode ON RMA.IdRMA = trelRMA_SymptomCode.fiRMA INNER JOIN
tdefSymptomCode ON trelRMA_SymptomCode.fiSymptomCode = tdefSymptomCode.idSymptomCode
where idRMA=@idRMA
order by SymptomCodeNumber
return @Codes
END