2016-12-14 2 views
0

Я прочитал много потоков, но не получил правильное решение моей проблемы. Это сопоставимо с этим ThreadОператор SQL - LEFT JOIN и WHERE для отображения только первой строки

У меня есть запрос, который собирает данные и записывает его в сценарий оболочки в CSV файл:

SELECT 
    '"Dose History ID"' = d.dhs_id, 
    '"TxFieldPoint ID"' = tp.tfp_id, 
    '"TxFieldPointHistory ID"' = tph.tph_id, 
    ... 

FROM txfield t 
LEFT JOIN txfielpoint tp ON t.fld_id = tp.fld_id 
LEFT JOIN txfieldpoint_hst tph ON fh.fhs_id = tph.fhs_id 
... 

WHERE d.dhs_id NOT IN ('1000', '10000') 
    AND ... 
ORDER BY d.datetime,...; 

Это основано на очень большой базе данных с большим количеством таблиц и значений машины , Я выбрал интересующие колонки и связал их своими встроенными идентификаторами таблицы. Теперь я должен уменьшить свой результат, когда получаю много строк с одинаковыми значениями, и только идентификаторы меняются. Мне просто нужно один (первый) ряд «tph.tph_id» с механикой как

WHERE "Rownumber" is 1 

или что-то вроде этого. До сих пор я не мог реализовать правильный подзапрос или использовать SQL-функцию ROW_NUMBER(). Ваша помощь будет очень оценена. Результат выглядит так и, основываясь на последнем идентификаторе, мне просто нужна одна строка для каждого из этих чисел (все идентификаторы не являются строго последовательными).

A01";261511;2843119;714255;3634457; 
A01";261511;2843113;714256;3634457; 
A01";261511;2843113;714257;3634457; 
A02";261512;2843120;714258;3634464; 
A02";261512;2843114;714259;3634464; 
.... 
+0

попробовать 'GROUP BY' [все поля, за исключением tph.tph_id], а предназначены для агрегации,' GROUP BY' должно дать вам результат, который вы хотите –

+0

Возможно, мне что-то не хватает, но в начале вашего выбора у вас есть фатальная ошибка. Вы не можете назначить значение для строки (т. Е. ''" Идентификатор истории доз "' = d.dhs_id' является незаконным). Во-вторых, вы используете псевдоним 'd' (как в' WHERE d.dhs_id NOT IN ('1000', '10000') '), и я не вижу, где этот псевдоним определяется. – FDavidov

+0

@FDavidov псевдоним для d (и других) следует позже в части SELECT. Я попробовал – Nurito

ответ

0

Я думаю, что «GROUP BY» может удовлетворить ваши потребности.

Вы можете группировать строки с одинаковыми значениями для набора столбцов в одной строке

Смежные вопросы