Как не включать строки, имеющие совпадающие значения в 2 столбца - PullRequest
0 голосов
/ 30 мая 2018

У меня есть таблица, которая имеет 3 столбца.Я не хочу повторять строку на основе 2 столбцов с одинаковыми значениями.

  |start_date(date)| end_date(date) |theDiff(integer)
  ---------------------------------------------------
  |2018-05-14      |  2018-05-18    |        5      |
  |2018-05-14      |  2018-05-18    |        10     |
  ---------------------------------------------------

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

  |start_date(date)| end_date(date) |theDiff(integer)
  ---------------------------------------------------
  |2018-05-14      |  2018-05-18    |        5      |
  ---------------------------------------------------

У меня много таких строк, и я не хочу, чтобы ониповторение.Я просто хочу добавить их первое появление.Я всегда хочу, чтобы он выводил нижнюю разницу.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Если я правильно понимаю, вы ожидаете, что первое вхождение будет разным (start_date, end_date).

Вы можете использовать функцию row_number () и затем выбрать строки, где номер строки = 1.

with x as
(
    select start_date, end_date, theDiff,
           row_number() over (partition by start_date, end_date order by start_date) rn
    from   tbl
)
select start_date, end_date, theDiff
from   x
where  rn = 1; 
start_date | end_date   | thediff
:--------- | :--------- | ------:
2018-05-14 | 2018-05-18 |       5

db <> fiddle здесь

Вы можете переместить CTE в предложение FROM:

select start_date, end_date, theDiff
from
    (
        select start_date, end_date, theDiff,
               row_number() over (partition by start_date, end_date order by start_date) rn
        from   tbl
    ) x
where  rn = 1; 
0 голосов
/ 30 мая 2018

Не ясно, как определяется результирующий theDiff, некоторые альтернативные AGGREGATING функции:

-- diff between max and min
SELECT start_date, end_date, MAX(thediff)-MIN(thediff)
FROM T
GROUP BY start_date, end_date

-- min value
SELECT start_date, end_date, MIN(thediff)
FROM T
GROUP BY start_date, end_date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...