Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с запросом  [new]
28072016
Guest
Здравствуйте !
Есть табличка, в которой нужно свернуть данные по месяцам.
IdMonthc2000d2000c2012d2012
6NULLNULL6559.702016-06-01
6NULLNULL20991.042016-06-28
634300.002016-06-30NULLNULL

Хочется получить
IdMonthc2000d2000c2012d2012
634300.002016-06-306559.702016-06-01
6NULLNULL20991.042016-06-28
28 июл 16, 10:46    [19466019]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
28072016,

а чё так а не наоборот?
28 июл 16, 10:48    [19466026]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
28072016
Guest
Зачем мне наоборот, если нужно СВЕРНУТЬ
28 июл 16, 11:23    [19466242]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
28072016,

мда.. по какому правилу сворачиваете именно к строке с 2016-06-01 а не к 2016-06-28
28 июл 16, 11:38    [19466383]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
28072016
Guest
по какому правилу сворачиваете

Нужно сформировать перечень c2000/d2000 и с2012/в2012 по месяцу. Правило ? Левая часть по возрастанию дат, правая часть по возрастанию дат. Между собой данные связаны лишь по месяцу
28 июл 16, 11:53    [19466520]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Владислав Колосов
Member

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

join знаете?
28 июл 16, 12:01    [19466588]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
28072016
Guest
Конечно знаю, но JOINом получается так
IdMonthc2000d2000c2012d2012
634300.002016-06-306559.702016-06-01
634300.002016-06-3020991.042016-06-28
28 июл 16, 12:04    [19466609]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
28072016
Guest
Вроде получилось, правда не знаю, на сколько это правильно
    select IdMonth=isnull(A.IdMonth,B.IdMonth),
           A.c2000,A.d2000,
           B.c2012,B.d2012
     from (select IdMonth,c2000=sum(c2000),d2000,X=ROW_NUMBER() OVER(PARTITION BY IdMonth ORDER BY IdMonth) from @Tmp where c2000 is not null group by IdMonth, d2000) A
full join (select IdMonth,c2012=sum(c2012),d2012,X=ROW_NUMBER() OVER(PARTITION BY IdMonth ORDER BY IdMonth) from @Tmp where c2012 is not null group by IdMonth, d2012) B on A.IdMonth = B.IdMonth and A.X = B.X
order by isnull(A.IdMonth,B.IdMonth)
28 июл 16, 12:26    [19466787]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить