Как найти последнюю запись в группе


Ниже моя таблица данных:

+----------+--------------+--------+-------+---------------+-------------+--------+
| RegionID | ReceivedDate | FdNo   | FmNo  | FromRegionID  | ToRegionID  | HFlag  |
+----------+--------------+--------+-------+---------------+-------------+--------+
| 26       | 2014-04-10   | 104152 | 1     | 26            | 27          | 1      |
| 26       | 2014-04-10   | 104152 | 1     | 27            | 26          | 0      |
| 26       | 2014-04-10   | 104152 | 2     | 26            | 27          | 1      |
| 26       | 2014-04-10   | 104152 | 2     | 27            | 26          | 0      |
| 26       | 2014-04-10   | 104152 | 3     | 26            | 27          | 1      |
| 26       | 2014-04-10   | 104152 | 3     | 27            | 26          | 0      |
| 26       | 2014-04-10   | 104152 | 4     | 26            | 27          | 1      |
| 26       | 2014-04-10   | 104152 | 4     | 27            | 26          | 0      |
+----------+--------------+--------+-------+---------------+-------------+--------+

Я хочу выбрать последнюю запись из каждой группы таблицы fdNo. В примере таблицы я дал данные с числом дубликатов 2, в реальном случае это может быть 3,4 и т. д.

ожидаемый результат:

+----+-------------------------+--------+---+----+----+---+
| 26 | 2014-04-10 15:35:30.000 | 104152 | 1 | 27 | 26 | 0 |
| 26 | 2014-04-10 15:35:30.000 | 104152 | 2 | 27 | 26 | 0 |
| 26 | 2014-04-10 15:35:44.000 | 104152 | 3 | 27 | 26 | 0 |
| 26 | 2014-04-10 15:35:44.000 | 104152 | 4 | 27 | 26 | 0 |
+----+-------------------------+--------+---+----+----+---+


Я хочу добавить ответный запрос к моему исходному запросу (из которого берется фактическая таблица)

Сырой запрос:

SELECT tblreceipt.regionid, 
       tblreceipt.receiveddate, 
       tblreceipt.folderno, 
       tblreceipt.formno, 
       tbltransite.dispatchfromregionid, 
       tbltransite.dispatchtoregionid, 
       tbltransite.horeceivedflag 
FROM   tblreceipt 
       LEFT OUTER JOIN tbltransite 
                    ON tblreceipt.folderno = tbltransite.folderno 
WHERE  tblreceipt.folderno = 104152 

person Adriano Santros    schedule 07.06.2014    source источник
comment
можете ли вы отформатировать структуру таблицы, ее трудно читать   -  person ddw147    schedule 07.06.2014
comment
хорошо, я попробую .. я новичок в софте.   -  person Adriano Santros    schedule 07.06.2014
comment
Последнее на основании чего? Дата, какой-то первичный ключ. В общем, вы можете использовать row_number() over() для такого рода запросов.   -  person John Powell    schedule 07.06.2014
comment
если вы предоставите ожидаемый результат, другой участник может помочь вам лучше   -  person ddw147    schedule 07.06.2014
comment
последняя запись 104152 и 1 такая комбинация...   -  person Adriano Santros    schedule 07.06.2014


Ответы (1)


person    schedule
comment
Нет @meysam tolouee, не ожидается, что он покажет только 1 запись, я ожидаю 100 записей, если моя таблица содержит 200 записей - person Adriano Santros; 07.06.2014
comment
Где rn = 1, а не выбрать топ 1... упорядочить по? - person John Powell; 07.06.2014
comment
Я сделал внутреннее соединение с cte для максимального числа RN, и это сработало, выберите * Из внутреннего соединения CTE c1 (выберите MAX (Rn) как Rn из группы CTE по FolderNo, FormNo) c2 On c1.Rn = c2.Rn порядок c1.FolderNo ,c1.Форма№ - person Adriano Santros; 07.06.2014