SQL Server 2000
Мой стол:
CARDNO CARDEVENTDATE CARDEVENTTIME
121 20090610 025050
121 20090611 040000
121 20090611 050000
121 20090611 020000
122 20090611 030001
122 20090611 030000
123 20090611 080000
123 20090611 100000
123 20090611 132449
123 20090611 025959
124 20090610 030000
124 20090612 030001
125 20090611 030002
125 20090612 040000
Cardno - отдельный стол
Cardeventdate, cardeventtime - это отдельный стол
Из приведенной выше таблицы я хочу получить верхнее и нижнее время для конкретного события cardeventdate и Cardno
Для 121, 20090611, верхнее время - 040000, нижнее время - 020000
Для 123, 20090611, верхнее время - 080000, нижнее время - 025959…
Как это мне нужно.
Я использовал Мин (время) и Макс (время), но он показывал вот так.
Для CardNo - 121
Cardeventdate - 20090611
Минимальное время - 020000
Максимальное время - 040000
Я не хочу получать min и Max, мне нужны только значения top и Bottom (или) First and Last time конкретной даты и Cardno.
Я использовал этот запрос
SELECT RowNumber = IDENTITY (int, 1, 1), CARDNO, CARDEVENTDATE, CARDEVENTTIME INTO #Table1 FROM T_CARDEVENT SELECT t1.CARDNO, t1.CARDEVENTDATE, t1.CARDEVENTTIME FROM #Table t1 INNER JOIN (SELECT RowNumber = MIN(RowNumber), CARDEVENTDATE, CARDNO FROM #Table1 t WHERE (cardeventdate > 20090601) GROUP BY cardno, cardeventdate UNION ALL SELECT MAX(RowNumber), CARDEVENTDATE, CARDNO FROM #Table1 t WHERE (cardeventdate > 20090601) GROUP BY cardno, cardeventdate) t2 ON t2.rownumber = t1.rownumber
Выход:
ROWNUMBER CARDNO CARDEVENTDATE CARDEVENTTIME
335 0121 20090611 040000
1099 0121 20090611 050000
1100 0121 20090611 025050
336 0121 20090612 020000
337 0122 20090611 030001
338 0122 20090612 030000
339 0123 20090611 080000
1101 0123 20090611 100000
1102 0123 20090611 132449
340 0123 20090612 025959
341 0124 20090611 030000
342 0124 20090612 030001
343 0125 20090611 030002
344 0125 20090612 040000
Итак, номер строки создается для всех столбцов, исходя из того, как я должен использовать Первый раз и Последний раз для конкретной даты.
Ожидаемый вывод
CARDNO CARDEVENTDATE CARDEVENTTIME Expecting
0121 20090611 040000 Top Value
0121 20090611 020000 No Need
0121 20090611 025050 Bottom Value
……… так далее
Нужна справка по запросу.