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

Откуда:
Сообщений: 36
Всем доброго времени суток.
Помогите начинающим
Есть запрос который возвращает номера накладны и их даты
SELECT
'Согласно накладных',
o.ORDERS_NUM,
o.ORDERS_DATE

FROM ORDERS AS o WITH (NOLOCK)
WHERE o.ORDERS_DATE > '20140301'
Результата (рис1)
Нужно его изменить таким образом что бы все накладные с одинаковой датой отображались одной строчкой (рис 2).
Подскажите как быть, пожалуйста

К сообщению приложен файл. Размер - 23Kb
9 апр 14, 12:14    [15855025]     Ответить | Цитировать Сообщить модератору
 Re: Сгрупировать по дате  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
anrrry, вот буквально рядом же такая же точно тема.

FAQ
9 апр 14, 12:22    [15855111]     Ответить | Цитировать Сообщить модератору
 Re: Сгрупировать по дате  [new]
iap
Member

Откуда: Москва
Сообщений: 47197
SELECT 
'Согласно накладных',
[ORDERS_NUM]=STUFF
(
 SELECT ', '+CAST(oo.ORDERS_NUM AS VARCHAR)
 FROM ORDERS AS oo
 WHERE oo.ORDERS_DATE=o.ORDERS_DATE
 ORDER BY oo.ORDERS_NUM
 FOR XML PATH('')
),1,2,''),
o.ORDERS_DATE
FROM ORDERS AS o WITH (NOLOCK)
WHERE o.ORDERS_DATE > '20140301'
GROUP BY o.ORDERS_DATE;
9 апр 14, 12:24    [15855128]     Ответить | Цитировать Сообщить модератору
 Re: Сгрупировать по дате  [new]
o-o
Guest
это нынче так в школе учат или мода?
согласно [кому?/чему? -- дательный падеж] накладнЫМ
9 апр 14, 12:40    [15855308]     Ответить | Цитировать Сообщить модератору
 Re: Сгрупировать по дате  [new]
anrrry
Member

Откуда:
Сообщений: 36
iap
SELECT 
'Согласно накладных',
[ORDERS_NUM]=STUFF
(
 SELECT ', '+CAST(oo.ORDERS_NUM AS VARCHAR)
 FROM ORDERS AS oo
 WHERE oo.ORDERS_DATE=o.ORDERS_DATE
 ORDER BY oo.ORDERS_NUM
 FOR XML PATH('')
),1,2,''),
o.ORDERS_DATE
FROM ORDERS AS o WITH (NOLOCK)
WHERE o.ORDERS_DATE > '20140301'
GROUP BY o.ORDERS_DATE;


Спасибо, но не работает
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'SELECT'.
Msg 102, Level 15, State 1, Line 10
Incorrect syntax near ')'.
Msg 319, Level 15, State 1, Line 12
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
9 апр 14, 12:47    [15855358]     Ответить | Цитировать Сообщить модератору
 Re: Сгрупировать по дате  [new]
iap
Member

Откуда: Москва
Сообщений: 47197
anrrry
iap
SELECT 
'Согласно накладных',
[ORDERS_NUM]=STUFF
(
 SELECT ', '+CAST(oo.ORDERS_NUM AS VARCHAR)
 FROM ORDERS AS oo
 WHERE oo.ORDERS_DATE=o.ORDERS_DATE
 ORDER BY oo.ORDERS_NUM
 FOR XML PATH('')
),1,2,''),
o.ORDERS_DATE
FROM ORDERS AS o WITH (NOLOCK)
WHERE o.ORDERS_DATE > '20140301'
GROUP BY o.ORDERS_DATE;



Спасибо, но не работает
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'SELECT'.
Msg 102, Level 15, State 1, Line 10
Incorrect syntax near ')'.
Msg 319, Level 15, State 1, Line 12
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
Скобку пропустил:
SELECT 
'Согласно накладных',
[ORDERS_NUM]=STUFF
(
 (
  SELECT ', '+CAST(oo.ORDERS_NUM AS VARCHAR)
  FROM ORDERS AS oo
  WHERE oo.ORDERS_DATE=o.ORDERS_DATE
  ORDER BY oo.ORDERS_NUM
  FOR XML PATH('')
 ),1,2,''
),
o.ORDERS_DATE
FROM ORDERS AS o WITH (NOLOCK)
WHERE o.ORDERS_DATE > '20140301'
GROUP BY o.ORDERS_DATE;
9 апр 14, 12:52    [15855389]     Ответить | Цитировать Сообщить модератору
 Re: Сгрупировать по дате  [new]
iap
Member

Откуда: Москва
Сообщений: 47197
o-o
это нынче так в школе учат или мода?
согласно [кому?/чему? -- дательный падеж] накладнЫМ
Прошу прощения.
Не заметил
9 апр 14, 12:53    [15855393]     Ответить | Цитировать Сообщить модератору
 Re: Сгрупировать по дате  [new]
anrrry
Member

Откуда:
Сообщений: 36
iap
SELECT 
'Согласно накладных',
[ORDERS_NUM]=STUFF
(
 SELECT ', '+CAST(oo.ORDERS_NUM AS VARCHAR)
 FROM ORDERS AS oo
 WHERE oo.ORDERS_DATE=o.ORDERS_DATE
 ORDER BY oo.ORDERS_NUM
 FOR XML PATH('')
),1,2,''),
o.ORDERS_DATE
FROM ORDERS AS o WITH (NOLOCK)
WHERE o.ORDERS_DATE > '20140301'
GROUP BY o.ORDERS_DATE;


Скобки не хватало, спасибо большое
9 апр 14, 12:54    [15855394]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить