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

Откуда:
Сообщений: 5
На рисунке, сверху таблица которая у меня есть мне нужно сделать таблицу которая снизу. То есть нужно чтобы если в колонке "Symbol" i "Nazwa" одинаковые значения они соединялись в одну строку, а колонка "Numer Docymenty" соединялась через запятую так как там всегда разные значения, и соответственно остальные колонки сумировались если произошло соединение, такие как "Count", "Wart.Netto" і тд.

К сообщению приложен файл. Размер - 144Kb
14 июл 16, 00:23    [19406919]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить select  [new]
Илья_1985
Member

Откуда:
Сообщений: 7
serdtsekol, я бы как-нибудь так сделал:
Select Symbol
, Nazwa
, (select [Numer Documenty] + ', '
from T t1
Where t1.Symbol = T.Symbol
and t1.Nazwa = T.Nazwa
For xml path ('')
)as [Numer Documenty]
, sum(count) as Count
, Jm
, sum ([Wart.Netto]) as [Wart.Netto]
, sum ([Wart.Brutto]) as [Wart.Brutto]
, sum (Stan) as Stan
, sum (Rezerwacja] as Rezerwacja
, sum (Dostepne) as Rezerwacja
From T
Group By Symbol, Nazwa, Jm
14 июл 16, 00:44    [19406946]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить select  [new]
3unknown
Member

Откуда: New York
Сообщений: 140
create table #tmp(symbol varchar(15),name varchar(30),number varchar(30),cnt int,netto real,brutto real )

insert #tmp
values('AOR123','Absolut Organic','ZK 1234/07/2016',1,27.45,33.76)
,('BMN123','Beaming Baby','ZK 1234/07/2016',5,127.55,333.86)
,('BMN123','Beaming Baby','ZK 8896/07/2016',5,127.55,333.86)


select symbol,name,max(number),sum(cnt),sum(netto),sum(brutto)
from(
select symbol
,name
,stuff((select ', '+number
from #tmp as t1 where t1.symbol = t.symbol  for xml path('')),1,2,'') as number
,cnt
,netto
,brutto
from #tmp t
) a
group by symbol,name
14 июл 16, 01:08    [19406978]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить select  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
https://www.sql.ru/faq/faq_topic.aspx?fid=130
14 июл 16, 01:18    [19406989]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить select  [new]
serdtsekol
Member

Откуда:
Сообщений: 5
3unknown,

Можешь написать свой скайп у меня есть еще один вопрос но я его здесь не смогу обяснить, так как не знаю как написать нужно чтобы кто-то увидел. Зарание спасибо или просто добавь меня "romaroma4507" просто уже 2 день бюсь над одною проблемой и спать не могу. Буду очень благодарен.
15 июл 16, 00:24    [19411707]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить select  [new]
serdtsekol
Member

Откуда:
Сообщений: 5
3unknown,
и твой кот работает только я не смог его впилить к себе у никак не могу нормально чтобы отображался (номер документа) через кому

Вот мой код и вот что он делает с Номером документа

SELECT  tw_Rodzaj as Rodzaj
, tw_Symbol As Symbol
, tw_Nazwa as Nazwa
--,dok_NrPelny as NumerDocymenty

, (select dok_NrPelny + ', '
from [dbo].tw__Towar  t1
INNER JOIN [dbo].dok__Dokument t2 ON t2.dok_Nr = t1.tw_Id 
INNER JOIN [dbo].dok_Pozycja t3 ON t3.ob_TowId = t2.dok_Nr
--inner join dbo.tw__Towar t2 on  t2.dok_Nr = t1.tw_Id
--inner join dbo.dok_Pozycja t3 on t3.ob_DokHanId = t3.ob_TowId
Where t1.tw_Symbol = tw_Symbol and t1.tw_Nazwa = tw_Nazwa 
For xml path ('')
)as NymerDokymentu

--, (Select p1.tw_Pole1 from [E_M_KOPIA].[dbo].tw__towar p1 where p1.tw_Id=ob_towid) as [Zapach]
--, (Select p1.tw_Pole2 from [E_M_KOPIA].[dbo].tw__towar p1 where p1.tw_Id=ob_towid) as [Kolekcja]
--, (Select p1.tw_Pole3 from [E_M_KOPIA].[dbo].tw__towar p1 where p1.tw_Id=ob_towid) as [Na zamówienie]
, SUM (ob_Ilosc* ob_znak) AS Ilosc
, tw_JednMiary as Jm
, SUM(ob_WartNetto * ob_Znak) as 'Wart.Netto'
, SUM(ob_WartBrutto * ob_Znak) as 'Wart.Brutto'
, ( SELECT SUM(st_Stan) FROM [dbo].tw_stan WHERE st_TowId = ob_TowId   GROUP BY st_TowId ) AS Stan   
, ( SELECT SUM(st_StanRez) FROM [dbo].tw_stan WHERE st_TowId = ob_TowId   GROUP BY st_TowId ) AS Rezerwacja   
, ( SELECT SUM(st_Stan - st_StanRez) FROM [dbo].tw_stan WHERE st_TowId = ob_TowId   GROUP BY st_TowId ) AS Dostepne   
FROM [dbo].dok__Dokument
INNER JOIN [dbo].dok_Pozycja ON dok_Id = ob_DokHanId 
INNER JOIN [dbo].tw__Towar ON ob_TowId = tw_Id 
WHERE (
--(dok_Status in (8))                                         
--and 
(dok_typ in (16))
) 
GROUP BY Tw_Symbol, 
tw_Nazwa, 
tw_JednMiary, 
ob_TowId, 
tw_Rodzaj

ORDER BY Symbol


К сообщению приложен файл. Размер - 136Kb
15 июл 16, 01:14    [19411806]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить