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

Откуда: Оттуда...
Сообщений: 548
Доброго всем времени суток.

имеем:
set nocount on

drop table #temp
go
create table #temp( id int, name varchar (20), date datetime, seq_no int identity)

insert into #temp values(1, 'file 1', '01/01/13')
insert into #temp values(1, 'file 2', '01/02/13')
insert into #temp values(1, 'file 3', '01/03/13')

select * from #temp

/*
id name date seq_no
----------- -------------------- ----------------------- -----------
1 file 1 2013-01-01 00:00:00.000 1
1 file 2 2013-01-02 00:00:00.000 2
1 file 3 2013-01-03 00:00:00.000 3
*/


нужно получить результат:
/*
col_1 col_2 col_3 col_4
------- ----------------------------- --------- ------------------------------
file 1 2013-01-01 00:00:00.000 file 2 2013-01-02 00:00:00.000
file 3 2013-01-03 00:00:00.000 null null
*/


за помощь,буду премного благодарен.
Пасиб
9 апр 13, 18:10    [14158426]     Ответить | Цитировать Сообщить модератору
 Re: Ребята подскажите с селектом пожалуйста (MSSQL)  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
voronk
нужно получить результат:
/*
col_1 col_2 col_3 col_4
------- ----------------------------- --------- ------------------------------
file 1 2013-01-01 00:00:00.000 file 2 2013-01-02 00:00:00.000
file 3 2013-01-03 00:00:00.000 null null
*/
в этом есть какая-то логика?
9 апр 13, 18:18    [14158480]     Ответить | Цитировать Сообщить модератору
 Re: Ребята подскажите с селектом пожалуйста (MSSQL)  [new]
qwerty112
Guest
;with cte as
(select *, 
(row_number() over (order by name)- 1) / 2  as rn, 
(row_number() over (order by name)- 1) % 2  as xz 
from #temp)

select t1.*, t2.* 
from cte t1 left join cte t2 on t1.rn=t2.rn and t2.xz=1
where t1.xz=0 


id          name                 date                    seq_no      rn                   xz                   id          name                 date                    seq_no      rn                   xz
----------- -------------------- ----------------------- ----------- -------------------- -------------------- ----------- -------------------- ----------------------- ----------- -------------------- --------------------
1           file 1               2013-01-01 00:00:00.000 1           0                    0                    1           file 2               2013-01-02 00:00:00.000 2           0                    1
1           file 3               2013-01-03 00:00:00.000 3           1                    0                    NULL        NULL                 NULL                    NULL        NULL                 NULL
9 апр 13, 18:27    [14158512]     Ответить | Цитировать Сообщить модератору
 Re: Ребята подскажите с селектом пожалуйста (MSSQL)  [new]
voronk
Member

Откуда: Оттуда...
Сообщений: 548
Паганель,


для меня да. я в powerbuilder реаботаю с word macros для добавления картинок, а под ними дат когда они были сделаны в вордовский документ и если sql вернёт мне дату в необходимом формате, мне будет гораздо легче по жизни ... :roll:
9 апр 13, 18:37    [14158545]     Ответить | Цитировать Сообщить модератору
 Re: Ребята подскажите с селектом пожалуйста (MSSQL)  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
я перечитал 5 раз, но так и не понял, причем тут формат даты к развороту данных в 4 колонки
9 апр 13, 18:40    [14158554]     Ответить | Цитировать Сообщить модератору
 Re: Ребята подскажите с селектом пожалуйста (MSSQL)  [new]
voronk
Member

Откуда: Оттуда...
Сообщений: 548
qwerty112
;with cte as
(select *, 
(row_number() over (order by name)- 1) / 2  as rn, 
(row_number() over (order by name)- 1) % 2  as xz 
from #temp)

select t1.*, t2.* 
from cte t1 left join cte t2 on t1.rn=t2.rn and t2.xz=1
where t1.xz=0 


id          name                 date                    seq_no      rn                   xz                   id          name                 date                    seq_no      rn                   xz
----------- -------------------- ----------------------- ----------- -------------------- -------------------- ----------- -------------------- ----------------------- ----------- -------------------- --------------------
1           file 1               2013-01-01 00:00:00.000 1           0                    0                    1           file 2               2013-01-02 00:00:00.000 2           0                    1
1           file 3               2013-01-03 00:00:00.000 3           1                    0                    NULL        NULL                 NULL                    NULL        NULL                 NULL


вах !!! qwerty112 - спасибо ... чуствуетса разница между про и любителем :roll: я с таким кодом и не сталкивался

вот так у меня работает:
select *
from #TEMP TA, #TEMP TB

where Tb.seq_no =* TA.seq_no + 1
and Ta.seq_no % 2 = 1

но "=*" низзя

qwerty112, я с left/right joint не в ладах, всё отодвигаю разобратса "на потом" помоги пожалуйста мой код поправить ...
9 апр 13, 18:42    [14158559]     Ответить | Цитировать Сообщить модератору
 Re: Ребята подскажите с селектом пожалуйста (MSSQL)  [new]
voronk
Member

Откуда: Оттуда...
Сообщений: 548
Паганель
я перечитал 5 раз, но так и не понял, причем тут формат даты к развороту данных в 4 колонки


имеетса ввиду не формат даты в колонках, а формат возврата селекта.
9 апр 13, 18:45    [14158568]     Ответить | Цитировать Сообщить модератору
 Re: Ребята подскажите с селектом пожалуйста (MSSQL)  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
voronk
если sql вернёт мне дату в необходимом формате, мне будет гораздо легче по жизни
voronk
имеетса ввиду не формат даты в колонках, а формат возврата селекта.
я уже запутался
9 апр 13, 18:47    [14158572]     Ответить | Цитировать Сообщить модератору
 Re: Ребята подскажите с селектом пожалуйста (MSSQL)  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
voronk
помоги пожалуйста мой код поправить ...
FULL JOIN
я так вижу (с)
9 апр 13, 18:50    [14158586]     Ответить | Цитировать Сообщить модератору
 Re: Ребята подскажите с селектом пожалуйста (MSSQL)  [new]
voronk
Member

Откуда: Оттуда...
Сообщений: 548
Паганель
voronk
если sql вернёт мне дату в необходимом формате, мне будет гораздо легче по жизни
voronk
имеетса ввиду не формат даты в колонках, а формат возврата селекта.
я уже запутался




КОмрад, чё тут путатса?

есть таблица с тремя колонками и тремя рекордами, вернуть из неё надо шесть колонок двумя рекордами.

Или ты прикалываешся?

ps
как пользоватса help я знаю.
9 апр 13, 18:58    [14158616]     Ответить | Цитировать Сообщить модератору
 Re: Ребята подскажите с селектом пожалуйста (MSSQL)  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
voronk
есть таблица с тремя колонками и тремя рекордами, вернуть из неё надо шесть колонок двумя рекордами
на таких данных какой ответ ожидается?

id name date seq_no
----------- -------------------- ----------------------- -----------
1 file 1 2013-01-05 00:00:00.000 1
1 file 12 2013-01-03 00:00:00.000 3
1 file 2 2013-01-01 00:00:00.000 5



voronk
как пользоватса help я знаю.
это прекрасно, пользуйтесь, я для того ссылку и дал
9 апр 13, 19:02    [14158625]     Ответить | Цитировать Сообщить модератору
 Re: Ребята подскажите с селектом пожалуйста (MSSQL)  [new]
voronk
Member

Откуда: Оттуда...
Сообщений: 548
вопрос снят с поветки дня

Всё получилось:

select *
from #TEMP TA, #TEMP TB

where Tb.seq_no =* TA.seq_no + 1
and Ta.seq_no % 2 = 1

select *
from #TEMP TA left OUTER JOIN #TEMP TB on Tb.seq_no = Ta.seq_no + 1

where
Ta.seq_no % 2 = 1




война окончена, всем спасибо
(с)


ПС
спасибо всем поучаствовавшим.
9 апр 13, 19:05    [14158637]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить