Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Объединить строки?!  [new]
Новичок sql
Member

Откуда:
Сообщений: 7
Помогите плз с лабораторной...

create table Products
(ID int identity(1,1) primary key not null,
 ProdName varchar(200) not null,
 );

create table ProdCost
(ID int identity (1,1) primary key not null,
 Product_ID int not null references Products (ID),
 Cost int not null check (Cost between 1 and 100));

 insert into Products 
 (ProdName)
 values 
 ('Tomat'),
 ('Apple'),
 ('Milk'),
 ('Sugar')
 ('Water')
;
 
 
 insert into ProdCost
 (Product_ID,Cost)
 values
 (1,35), (1,40), (1,20), (1,75),
 (2,30), (2,45), (2,80), (2,50),
 (3,10), (3,25), (4,55), (4,30)

нужно получить
|Tomat|35,40,20,75|
|Apple |30,45,80,50|
|Milk   |10,25         |
|Sugar|55,30         |
|Water|                |

Подскажите, как мне объединить строки с одинаковыми продуктами, чтоб цифры были через запятую?
:(
14 апр 11, 18:32    [10520364]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
iljy
Member

Откуда:
Сообщений: 8711
Новичок sql,

фак- сложение символьных полей в запросе.
14 апр 11, 18:33    [10520369]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
Новичок sql
Member

Откуда:
Сообщений: 7
iljy,
смотрел в faq, но там немного не то.
Как сделать чтоб сложить строки только с одинаковыми данными?
Помогите плз, только начинаем в школе учить sql :(
14 апр 11, 18:47    [10520402]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
iljy
Member

Откуда:
Сообщений: 8711
Новичок sql,

что значит с одинаковыми данными? С одинаковыми ID? Так там ровно так и делается - складываются строки с одинаковым значением типа.
Так же в факе есть статья с решением для версии сервера 2005 и выше.
https://www.sql.ru/faq/faq_topic.aspx?fid=731
14 апр 11, 18:56    [10520423]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
select id ,ProdName,( select cast(Cost as nvarchar(10)) + ' ,' as 'data()' from dbo.ProdCost t2 where t1.id=t2.Product_ID for xml path('') )
from dbo.Products t1
group by id ,ProdName

ех школьники,вам уже и показали дже смотреть и что... а вы говорите нет :((
14 апр 11, 18:58    [10520432]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
Новичок sql
Member

Откуда:
Сообщений: 7
а если не объединять в один столбец, а разбить значения по разным столбцам
|Tomat| 35 | 40 | 20 | 75|
как это сделать?
14 апр 11, 19:04    [10520449]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Новичок sql,

pivot

case
14 апр 11, 19:09    [10520457]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
Новичок sql
Member

Откуда:
Сообщений: 7
как это сделать с PIVOT?
14 апр 11, 19:16    [10520475]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Новичок sql
как это сделать с PIVOT?

как-то так
14 апр 11, 19:42    [10520535]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
Новичок sql
Member

Откуда:
Сообщений: 7
Ken@t,
я читал это, не совсем удалось разобраться

Всё таки в 14 лет учить sql тяжело, но приходиться
14 апр 11, 19:52    [10520553]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
iljy
Member

Откуда:
Сообщений: 8711
Новичок sql,
 select * from
 (select Product_ID, Cost, ROW_NUMBER() over(partition by Product_ID order by Product_ID) N from ProdCost) t1
 pivot (max(Cost) for N in ([1],[2],[3],[4])) pt
14 апр 11, 20:26    [10520648]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
Новичок sql
Member

Откуда:
Сообщений: 7
iljy,
а как использовать обе таблицы чтоб получить на вывод и ProdName тоже?
14 апр 11, 21:04    [10520724]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
iljy
Member

Откуда:
Сообщений: 8711
Новичок sql
iljy,
а как использовать обе таблицы чтоб получить на вывод и ProdName тоже?

Примеры JOIN
14 апр 11, 22:14    [10520902]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
Новичок sql
Member

Откуда:
Сообщений: 7
Разобрался :)
Спасибо за помощь!
14 апр 11, 22:42    [10520972]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4997
Новичок sql

Помогите плз, только начинаем в школе учить sql :(

[offtop]Хренасе, в школе уже SQL изучают...[/offtop]
15 апр 11, 09:53    [10521867]     Ответить | Цитировать Сообщить модератору
 Re: Объединить строки?!  [new]
Антохин
Member

Откуда:
Сообщений: 1684
Megabyte
Новичок sql

Помогите плз, только начинаем в школе учить sql :(

[offtop]Хренасе, в школе уже SQL изучают...[/offtop]


Ваще жесть!!!
20 фев 12, 14:22    [12122805]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить