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

Откуда:
Сообщений: 12
Мне нужно что бы даты склеивались
моя цель такова даты в которых использовалось число должны вывестись тобишь
"Днс 1" дата когда этот днс был днс 1 2019-11-16 он использовался а если 2019-11-17 он тоже использовался нудно вывести это так
Днс1 2019-11-16.2019-11-17
вот запрос
 with t as 
  (
  select s.dns_name as dns, s.data as dat from dbo.srav as s
  ) 
  select t.dns as dns, count(t.dns) as count_dns, 
  Chars = STUFF(CAST((
  SELECT [text()] = ', ' + convert(varchar(200),t.dat) 
  FROM t
  group by t.dat
  for xml path(''), Type )as varchar(200) ),1,2,'')
  from t
   group by t.dns


но он склеивает все даты которые есть.подскажите как сделать даты в которых используется днс

Есть таблица srav, столбцы: ДНС, дата. В одну дату не может быть повторяющихся днс, в разные - могут.
Задача: Выполить подсчет количества днс по датам, и выполнить конкатенацию дат по днс. Т.к. у меня sql server 2012 я не могу использовать функцию string_agg.

К сообщению приложен файл. Размер - 19Kb


Сообщение было отредактировано: 14 ноя 19, 07:26
14 ноя 19, 07:18    [22015814]     Ответить | Цитировать Сообщить модератору
 Re: Склеивание нужных дат  [new]
VicSO
Member

Откуда:
Сообщений: 189
Nastya66900,

У тебя нету ограничения на ДНС твой, ты склеиваешь все даты. нужно добавить условие.
14 ноя 19, 07:25    [22015817]     Ответить | Цитировать Сообщить модератору
 Re: Склеивание нужных дат  [new]
Nastya66900
Member

Откуда:
Сообщений: 12
VicSO,

не получается добавить правильно условие
14 ноя 19, 07:28    [22015818]     Ответить | Цитировать Сообщить модератору
 Re: Склеивание нужных дат  [new]
VicSO
Member

Откуда:
Сообщений: 189
Nastya66900,

Следующий раз пиши пример нормальный, а то тут ругать будут.
+

WITH
   t
   AS
      (SELECT '01' AS dns, 1 AS dat
       UNION ALL
       SELECT '01' AS dns, 2 AS dat
       UNION ALL
       SELECT '02' AS dns, 10 AS dat
       UNION ALL
       SELECT '02' AS dns, 11 AS dat
       UNION ALL
       SELECT '02' AS dns, 12 AS dat)
SELECT t.dns AS dns,
       count (t.dns) AS count_dns,
       Chars = STUFF (CAST
                      (
                         (SELECT [text()] =
                                    ', ' + CONVERT (VARCHAR (200), t1.dat)
                          FROM t t1
                          where t.dns = t1.dns
                          GROUP BY t1.dat
                          FOR XML PATH(''), TYPE) AS VARCHAR (200)),
                      1,
                      2,
                      '')
FROM t
GROUP BY t.dns

14 ноя 19, 07:41    [22015821]     Ответить | Цитировать Сообщить модератору
 Re: Склеивание нужных дат  [new]
Nastya66900
Member

Откуда:
Сообщений: 12
VicSO,

Спасибо большое я просто первый раз на форум пишу простите))
14 ноя 19, 07:54    [22015828]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить