Попробуйте выполнить свой Освобожденный вывод с помощью COALESCE
;
Создать образец таблицы для целей тестирования
CREATE TABLE SampleData (id INT ,store INT ,value NVARCHAR(50))
INSERT INTO SampleData VALUES (1 ,9921 ,'NOK')
INSERT INTO SampleData VALUES (2 ,9921 ,'NOK1')
INSERT INTO SampleData VALUES (3 ,9921 ,'NOK2')
Создать скалярная функция
Alter FUNCTION fun_GetCombinedData
(
@store int
)
RETURNS nvarchar(max)
AS
BEGIN
-- Declare the return variable here
DECLARE @CombineValue nvarchar(max)
SELECT @CombineValue = COALESCE(@CombineValue + ', ', '') + value
FROM SampleData where [email protected]
RETURN @CombineValue
END
GO
Final Query,
SELECT store
,dbo.fun_GetCombinedData(store) AS value
FROM SampleData
GROUP BY store
Ожидаемый выход:
store | value
------------------------
9921 | NOK,NOK1,NOK2
Это один из способов упростить ваш запрос выбора.
Какой двигатель базы данных? Чтобы сделать это в Apache Derby, мне пришлось написать определяемый пользователем агрегатор, который объединял строки. Тогда я мог бы запустить 'select store, uda (value), где store = 9921'. – cxw
Я использую чистый SQL-сервер –
Возможный дубликат [Объединить много строк в одну текстовую строку?] (Http://stackoverflow.com/questions/194852/concatenate-many-rows-into-a-single-text- string) –