Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка данных из одной таблицы в столбцы другой по условию / 8 сообщений из 8, страница 1 из 1
08.08.2018, 12:56
    #39684783
Navil77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка данных из одной таблицы в столбцы другой по условию
Добрый день уважаемые форумчане!
Столкнулся с необходимостью рассортировать данные из таблицы по столбцам, с целью логически увязать данные пере дальнейшей работой. Собственно сам пример:
1)Исходная таблица
----------------------------------------------------------------------------------------------------------------------------------
|id |GpsX |GpsY |ActionTime |ActivityId |IsCheckIn|
----------------------------------------------------------------------------------------------------------------------------------
9659A8F0-4858-4E88-B931-03A7F7E20FEF |42.9992973|44.7112604|2018-06-06 11:58:08|8E8EB8E2|0 |
----------------------------------------------------------------------------------------------------------------------------------
B9255187-0DAD-40E3-879C-3DB13761EDF8|42.9992988|44.7112618|2018-06-06 11:56:51|8E8EB8E2|0 |
----------------------------------------------------------------------------------------------------------------------------------
EC2345C1-DAC8-443E-9918-6A62987DFD4A|42.9993128|44.7112685|2018-06-06 11:40:49|8E8EB8E2|1 |
----------------------------------------------------------------------------------------------------------------------------------

2)А вот так должна выглядеть в итоге
-------------------------------------------------------------------------------------------------------------------
|ActivityId|GpsX_IN |GpsY_IN |CheckInTime|CheckOutTime|GpsX_OUT |GpsY_OUT |
-------------------------------------------------------------------------------------------------------------------
...
Рейтинг: 0 / 0
08.08.2018, 13:03
    #39684788
Navil77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка данных из одной таблицы в столбцы другой по условию
Собственно вот так выглядит запрос:

Код: sql
1.
2.
3.
4.
5.
SELECT        t1.ActivityId, t2.GpsX AS GPSX_IN, t2.GpsY AS GPSY_IN, MAX(t2.ActionTime) AS CheckInTime, MAX(t3.ActionTime) AS CheckOutTime, t3.GpsX AS GPSX_OUT, t3.GpsY AS GPSY_OUT
FROM            dbo.CheckInOutResult AS t1 INNER JOIN
                         dbo.CheckInOutResult AS t2 ON t1.ActivityId = t2.ActivityId AND t2.IsCheckIn = 1 INNER JOIN
                         dbo.CheckInOutResult AS t3 ON t2.ActivityId = t3.ActivityId AND t3.IsCheckIn = 0
GROUP BY t1.ActivityId, t2.GpsX, t2.GpsY, t3.GpsX, t3.GpsY



Но в итоге я получаю 2 строки

ActivityIdGpsX_IN GpsY_IN CheckInTimeCheckOutTimeGpsX_OUT GpsY_OUT 8E8EB8E242.999312844.71126852018-06-06 11:40:492018-06-06 11:58:0842.999297344.71126048E8EB8E242.999312844.71126852018-06-06 11:40:492018-06-06 11:56:5142.999298844.7112618

а хотелось бы 1 и с учётом самой последней даты

Модератор: Пользуйтесь тегами!
...
Рейтинг: 0 / 0
08.08.2018, 13:52
    #39684813
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка данных из одной таблицы в столбцы другой по условию
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
with a as
(
 select ActivityId, ActionTime, GpsX, GpsY, IsCheckIn, row_number() over (partition by ActivityId order by ActionTime desc) as rn from dbo.CheckInOutResult where IsCheckIn = 1
),
b as
(
 select ActivityId, ActionTime, GpsX, GpsY, IsCheckIn, row_number() over (partition by ActivityId order by ActionTime desc) as rn from dbo.CheckInOutResult where IsCheckIn = 0
)
select
 isnull(ci.ActivityId, co.ActivityId),
 ci.ActionTime as CheckInTime,
 ci.GpsX as GpsX_IN,
 ci.GpsY as GpsY_IN,
 co.GpsX as GpsX_OUT,
 co.GpsY as GpsY_OUT,
 co.ActionTime as CheckOutTime
from
 (select ActivityId, ActionTime, GpsX, GpsY, IsCheckIn from a where rn = 1) ci full join
 (select ActivityId, ActionTime, GpsX, GpsY, IsCheckIn from b where rn = 1) co on co.ActivityId = ci.ActivityId;
...
Рейтинг: 0 / 0
09.08.2018, 18:28
    #39685703
Navil77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка данных из одной таблицы в столбцы другой по условию
invm, спасибо!

Не ожидал такую быструю реакцию на этом форуме)))

Сохранил результат запроса в новую таблицу. Вопрос как обновлять там данные?
...
Рейтинг: 0 / 0
09.08.2018, 18:42
    #39685708
Владимир Затуливетер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка данных из одной таблицы в столбцы другой по условию
Navil77invm, спасибо!

Не ожидал такую быструю реакцию на этом форуме)))

Сохранил результат запроса в новую таблицу. Вопрос как обновлять там данные?

как и в любой другой таблице.
используйте
Код: sql
1.
update dbo.yourtable set colname = value
...
Рейтинг: 0 / 0
09.08.2018, 19:15
    #39685717
Navil77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка данных из одной таблицы в столбцы другой по условию
Владимир Затуливетер,

имеется в виду добавлять новые записи из этого запроса в ранее созданную таблицу.
...
Рейтинг: 0 / 0
09.08.2018, 20:05
    #39685739
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка данных из одной таблицы в столбцы другой по условию
Navil77имеется в виду добавлять новые записи из этого запроса в ранее созданную таблицу.Записи добавляются командой INSERT
...
Рейтинг: 0 / 0
09.08.2018, 23:07
    #39685787
Владимир Затуливетер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка данных из одной таблицы в столбцы другой по условию
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка данных из одной таблицы в столбцы другой по условию / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]