powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Слепить две строки в одну
11 сообщений из 11, страница 1 из 1
Слепить две строки в одну
    #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
Слепить две строки в одну
    #39601486
spermfall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ja bi posmotrel v storonu lag() and lead()
...
Рейтинг: 0 / 0
Слепить две строки в одну
    #39601494
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U_rtqwec,

версия сервера у вас какая?
...
Рейтинг: 0 / 0
Слепить две строки в одну
    #39601496
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оно ?
Код: sql
1.
2.
3.
4.
select Operationid, min(Resourceid) as Resourceid1, max(Resourceid) as Resourceid2,  dealtransactid
from ....
group by 
Operationid, dealtransactid
...
Рейтинг: 0 / 0
Слепить две строки в одну
    #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
Слепить две строки в одну
    #39601561
U_rtqwec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДедушкаU_rtqwec,

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

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


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