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

Откуда:
Сообщений: 46
Добрый вечер,

Хочу сгруппировать данные, что имею:
2014-12-17	NULL	002	Москва	1	1.5	ADR-IZOTERM	NULL
2014-12-17	NULL	002	Москва	2	4.0	TENT_BOK	Боковая разгрузка
2014-12-17	NULL	002	Москва	8	8.0	TENT_ZAD	NULL
2014-12-17	NULL	005	Питер  	5	5.5	ADR-IZOTERM	NULL
2014-12-17	NULL	005	Питер	26	26.5	TENT_ZAD	NULL
2014-12-17	NULL	006	Москва	9	9.0	TENT_ZAD	NULL


Что хочу получить :
2014-12-17	NULL	002	Москва	1	9,5	ADR-IZOTERM,TENT_ZAD	NULL
2014-12-17	NULL	002	Москва	2	4.0	TENT_BOK		Боковая разгрузка
2014-12-17	NULL	005	Питер  	5	32	ADR-IZOTERM,TENT_ZAD	NULL


Пробовал через CASE WHEN в GROUP BY не помогло т.к. если в таблице есть только TENT_ZAD он обзывал все равно строку значением указанным в выражении CASE после WHEN.

Ниже пример кода.

SELECT 
		wospnv.rr_ExpectedDate, 
		wospnv.planing_date, 
		wospnv.pr_StoreCode,
        wospnv.Storecountry_code, 
        SUM(wospnv.PAL_QTY) PAL_QTY, 
        SUM(wospnv.PAL_QTY_MEST) PAL_QTY_MEST, 
        CASE WHEN wospnv.trans = 'TENT_ZAD' AND wospnv.trans = 'ADR-IZOTERM' THEN 'ADR-IZOTERM-TENT_ZAD'
        ELSE wospnv.trans
        END tr
        ,wospnv.type_spec  

FROM WMSV_OBI_SHIP_PORTAL_NEW_V2 AS wospnv

GROUP BY 
		wospnv.rr_ExpectedDate, 
		wospnv.planing_date, 
		wospnv.pr_StoreCode,
        wospnv.Storecountry_code, 
        CASE WHEN wospnv.trans = 'TENT_ZAD' AND wospnv.trans = 'ADR-IZOTERM' THEN 'ADR-IZOTERM-TENT_ZAD'
        ELSE wospnv.trans
        END,
        wospnv.type_spec
7 янв 15, 20:17    [17092464]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать данные  [new]
Виталий П
Member

Откуда:
Сообщений: 46
Хочу добавить, данная функция есть в MySQL GROUP_CONCAT, но как ее реализовать в MsSQL я не понимаю.
7 янв 15, 21:23    [17092675]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать данные  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
Виталий П,

надо было сначала почитать FAQ
Правда, есть нюансы, которые там не учтены.
SELECT 
 w.rr_ExpectedDate
,w.planing_date
,w.pr_StoreCode
,w.Storecountry_code
,SUM(w.PAL_QTY) PAL_QTY
,SUM(w.PAL_QTY_MEST) PAL_QTY_MEST
,STUFF
 (
  (
   SELECT ','+ww.trans
   FROM WMSV_OBI_SHIP_PORTAL_NEW_V2 ww
   WHERE EXISTS
   (
    SELECT  w.rr_ExpectedDate, w.planing_date, w.pr_StoreCode, w.Storecountry_code, w.type_spec
    INTERSECT
    SELECT ww.rr_ExpectedDate,ww.planing_date,ww.pr_StoreCode,ww.Storecountry_code,ww.type_spec
   )
   FOR XML PATH(''),TYPE
 ).value('.','varchar(8000)')
 ,1,1,''
) tr
,w.type_spec
FROM WMSV_OBI_SHIP_PORTAL_NEW_V2 w
GROUP BY
 w.rr_ExpectedDate
,w.planing_date
,w.pr_StoreCode
,w.Storecountry_code
,w.type_spec;
7 янв 15, 21:25    [17092681]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать данные  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
Набегут ещё фанаты .NET со своими советами сбацать по-быстрому CLR-функцию
7 янв 15, 21:28    [17092689]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать данные  [new]
Виталий П
Member

Откуда:
Сообщений: 46
iap
Набегут ещё фанаты .NET со своими советами сбацать по-быстрому CLR-функцию


CLR-функцию не нужно, спасибо.
7 янв 15, 21:35    [17092711]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать данные  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
Виталий П
iap
Набегут ещё фанаты .NET со своими советами сбацать по-быстрому CLR-функцию


CLR-функцию не нужно, спасибо.
Это не мне надо говорить.
Они ещё не набежали.
7 янв 15, 21:51    [17092765]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать данные  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
iap,

А что криминального в CLR? Это нам свыше спущено, дескать - CLR - наше всё. Не согласны? Голосуйте, создавайте айтемы на коннекте. А в моем опыте, тут борьба двух критериев: удобство vs скорость.
Удобнее такое решать без CLR, быстрее с CLR.
У нас решено CLR - круто, никто не жалуется =)
Заметьте - я не набИгал =))
7 янв 15, 22:29    [17092897]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать данные  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4256
CLR тормоз, только ESP
8 янв 15, 08:01    [17093486]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать данные  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
SomewhereSomehow
iap,

А что криминального в CLR? Это нам свыше спущено, дескать - CLR - наше всё. Не согласны? Голосуйте, создавайте айтемы на коннекте. А в моем опыте, тут борьба двух критериев: удобство vs скорость.
Удобнее такое решать без CLR, быстрее с CLR.
У нас решено CLR - круто, никто не жалуется =)
Заметьте - я не набИгал =))
Нет, ничего криминального. Срок не светит!
Но так можно договориться до того, что все задачи решать таким способом.
Неким "чёрным ящиком", который есть далеко не у всех.
8 янв 15, 09:42    [17093577]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать данные  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
iap,

Согласен =). Я просто написал к тому, что не стоит прям так стращать CLR-ом. Некоторые задачи действительно хорошо решаются в нем. Но каждый сам решает, что ему удобнее. В целом, по поводу CLR мое мнение по прежнему такое 17004667.
8 янв 15, 12:07    [17093847]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить