eng_sammy Ответов: 2

Как сгруппировать столбец из разных строк в SQL без использования агрегатной функции?


У меня есть две таблицы в моей базе данных sql 1 называется транзакция и данные в ней находятся примерно в следующем виде
trans_ID        Item_ID
100               1
100               3
100               4
200               1
200               2
300               3


и еще одна таблица под названием items, которая имеет следующие атрибуты

ITem_ID         Item
1                I1
2                I2
3                I3
4                I4
5                I5


Я хочу написать запрос, который дает результат

Trans_ID       Items
100             I1,I3,I4
200             I1,I2
300              I3


Возможно ли это ?

Что я уже пробовал:

Я попробовал задать такой вопрос
select trans_id , concat(Items,',')
from transaction join items on transaction.Item_ID=items.Item_ID
group by trans_id

но это приводит к ошибке

Tomas Takac

какой движок базы данных? какая версия? какое сообщение об ошибке?

2 Ответов

Рейтинг:
0

mansi chaudhari

Вы можете попробовать это

DECLARE @txnid int
DECLARE @table table (Txnid INT,Items VARCHAR(15))

DECLARE cur CURSOR FOR
SELECT DISTINCT trans.Txnid FROM trans 

OPEN cur
FETCH NEXT FROM cur INTO @txnid

WHILE @@FETCH_STATUS =0
BEGIN 

	  INSERT INTO @table 
	  SELECT @txnid Txnid,STUFF((SELECT ','+items FROM Items WHERE itemid in(SELECT itemid FROM trans WHERE txnid=@txnid) FOR XML PATH('')),1,1,'')Items 
	  FETCH NEXT FROM cur INTO @txnid   
	 
END
SELECT * FROM @table
CLOSE cur
DEALLOCATE cur