Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Слепить две строки в одну / 11 сообщений из 11, страница 1 из 1
13.02.2018, 21:37
    #39601485
U_rtqwec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слепить две строки в одну
Есть вот такие две строки
Код: sql
1.
2.
3.
4.
OperationID                             CharType Resourceid                              dealtransactid
--------------------------------------- -------- --------------------------------------- ---------------------------------------
10000000002                             1        10000000003                             10000000013
10000000002                             2        10000000000                             10000000013



Нужно сделать одну вот такого вида

Код: sql
1.
2.
3.
OperationID     Resourceid1            Resourceid2           dealtransactid
--------------- ---------------------  --------------------- ----------------------------
10000000002     10000000003            10000000000           10000000013



То есть, Resourceid с CharType 1 должен стать Resourceid1, а Resourceid с CharType 2 должен стать Resourceid2. Не могу сообразить никак, что тут лучше сделать.
...
Рейтинг: 0 / 0
13.02.2018, 21:43
    #39601486
spermfall
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слепить две строки в одну
ja bi posmotrel v storonu lag() and lead()
...
Рейтинг: 0 / 0
13.02.2018, 22:43
    #39601494
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слепить две строки в одну
U_rtqwec,

версия сервера у вас какая?
...
Рейтинг: 0 / 0
13.02.2018, 22:50
    #39601496
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слепить две строки в одну
Оно ?
Код: sql
1.
2.
3.
4.
select Operationid, min(Resourceid) as Resourceid1, max(Resourceid) as Resourceid2,  dealtransactid
from ....
group by 
Operationid, dealtransactid
...
Рейтинг: 0 / 0
14.02.2018, 06:09
    #39601528
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слепить две строки в одну
LSV,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Declare  @tmp table
(
OperationID bigint,
CharType int,
Resourceid bigint,
dealtransactid bigint
);
Insert into @tmp Values 
(10000000002, 1, 10000000003, 10000000013),
(10000000002, 2, 10000000000, 10000000013),
(10000000002, 1, 10000000002, 10000000014),
(10000000002, 2, 10000000005, 10000000014);

Select OperationID, [1] as Resourceid1 , [2] as Resourceid2,	dealtransactid
From @tmp
PIVOT (Max(Resourceid) For CharType in ([1],[2])) as p
...
Рейтинг: 0 / 0
14.02.2018, 08:17
    #39601561
U_rtqwec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слепить две строки в одну
ДедушкаU_rtqwec,

версия сервера у вас какая?

SQL Server 2012
...
Рейтинг: 0 / 0
14.02.2018, 08:18
    #39601562
U_rtqwec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слепить две строки в одну
LSVОно ?
Код: sql
1.
2.
3.
4.
select Operationid, min(Resourceid) as Resourceid1, max(Resourceid) as Resourceid2,  dealtransactid
from ....
group by 
Operationid, dealtransactid



Спасибо, но не подходит, не факт, что Resourceid1 будет меньше, чем Resourceid2
...
Рейтинг: 0 / 0
14.02.2018, 08:19
    #39601563
U_rtqwec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слепить две строки в одну
KopellyLSV,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Declare  @tmp table
(
OperationID bigint,
CharType int,
Resourceid bigint,
dealtransactid bigint
);
Insert into @tmp Values 
(10000000002, 1, 10000000003, 10000000013),
(10000000002, 2, 10000000000, 10000000013),
(10000000002, 1, 10000000002, 10000000014),
(10000000002, 2, 10000000005, 10000000014);

Select OperationID, [1] as Resourceid1 , [2] as Resourceid2,	dealtransactid
From @tmp
PIVOT (Max(Resourceid) For CharType in ([1],[2])) as p



Спасибо, этот вариант хорош, надо потестировать, единственно не понятно как оно отработает на нескольких миллионах строк.
...
Рейтинг: 0 / 0
14.02.2018, 08:39
    #39601572
Jaffar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слепить две строки в одну
U_rtqwec,

Код: sql
1.
2.
3.
4.
5.
6.
--- Можно так
select OperationID, dealtransactid,
max(case CharType when 1 then Resourceid end) Resourceid_1,
max(case CharType when 2 then Resourceid end) Resourceid_2,
from TABLE_TABLE
group by OperationID, dealtransactid
...
Рейтинг: 0 / 0
14.02.2018, 11:25
    #39601655
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слепить две строки в одну
JaffarU_rtqwec,

Код: sql
1.
2.
3.
4.
5.
6.
--- Можно так
select OperationID, dealtransactid,
max(case CharType when 1 then Resourceid end) Resourceid_1,
max(case CharType when 2 then Resourceid end) Resourceid_2,
from TABLE_TABLE
group by OperationID, dealtransactid

бред какой-то
...
Рейтинг: 0 / 0
14.02.2018, 12:00
    #39601674
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слепить две строки в одну
LSVJaffarU_rtqwec,

Код: sql
1.
2.
3.
4.
5.
6.
--- Можно так
select OperationID, dealtransactid,
max(case CharType when 1 then Resourceid end) Resourceid_1,
max(case CharType when 2 then Resourceid end) Resourceid_2,
from TABLE_TABLE
group by OperationID, dealtransactid

бред какой-тоА...не... норм. Не туда посмотрел :)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Слепить две строки в одну / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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