Lalit Acharekar. Ответов: 1

Получить значение строки corrsponding в следующем столбце SQL


У меня есть таблица SQL, где записи сотрудника на ежедневной основе хранятся/сохраняются я хотел бы получить этот результат в табличном формате, как показано на прилагаемых скриншотах я использую SQL 2012
ALM TIME	TAGNAME	STATUS	NORMSTS	        UNIT	TEMP	OPERNAME
2019-07-07 10:10:00	A	LO		C	18.5	JOHN
2019-07-07 10:11:00	B	LO		C	14.2	WILLIAM
2019-07-07 10:14:00	C	LO		C	14.36	WILLIAM
2019-07-07 10:15:00	B	OK		C	12.01	KATE
2019-07-07 10:17:00	A	OK		F	17	JOHN
2019-07-07 10:18:00	A		Y	C	17.26	JOHN
2019-07-07 10:19:00	D	LO		PA	11.2	KATE
2019-07-07 10:21:00	C	OK		C	22.21	WILLIAM
2019-07-07 10:24:00	E	LO		C	27.5	JOHN
2019-07-07 10:25:00	E	OK		C	28.1	KATE
2019-07-07 10:27:00	D	OK		PA	15.24	JOHN
2019-07-07 10:29:00	B		Y	C	15.36	WILLIAM
2019-07-07 10:30:00	D		Y	F	17.25	JOHN



ALM IN	ALM OUT	TAG	UNIT	TEMP	OPERNAME	ALM ACK TIME
2019-07-07 10:10:00	2019-07-07 10:17:00	A	C	18.5	JOHN	2019-07-07 10:18:00
2019-07-07 10:11:00	2019-07-07 10:15:00	B	C	14.2	WILLIAM	2019-07-07 10:29:00
2019-07-07 10:14:00	2019-07-07 10:21:00	C	C	14.36	WILLIAM	-----
2019-07-07 10:19:00	2019-07-07 10:27:00	D	C	15.54	KATE	2019-07-07 10:30:00


Что я уже пробовал:

<pre>
select ALM_DESCR,
       max(case when [ALM_ALMSTATUS] = 'lo' then [ALM_NATIVETIMELAST] end) as intime,
       max(case when [ALM_ALMSTATUS] = 'ok' then [ALM_NATIVETIMELAST] end) as outtime
      from fixalarms WHERE ALM_NATIVETIMELAST BETWEEN '2019-05-20 06:00:00' AND  '2019-05-20 21:00:00'
group by ALM_DESCR;

jsc42

Сегодня я узнал кое-что новое, посмотрев на ваш SQL. Я не знал, что оговорка ELSE в случае была необязательной. Я посмотрел его, и документы говорят, что по умолчанию он равен ELSE NULL. Я думаю, что я все равно всегда буду вставлять явное ELSE в свой код, просто чтобы подтвердить, что я, по крайней мере, рассматривал такую возможность; но это захватывающая вещь в чтении кода других людей - всегда есть новые вещи, которые нужно открыть, или новые способы делать старые вещи.

1 Ответов

Рейтинг:
2

Wendelius

Вы можете использовать LAG и LEAD функции для извлечения данных из соседних строк. Я опубликовал небольшой совет по этому поводу. Взгляните на это Как извлечь данные из предыдущей или следующей строк в результирующем наборе[^]