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


Если я правильно понимаю, вам нужны строки, в которых дублируются первые четыре столбца. Простой метод использует count(*):
select t.*
from (select t.*,
count(*) over (partition by station, year, month, date) as cnt
from t
) t
where cnt > 1;
Предполагая, что в вашей таблице есть столбец первичного ключа с именем id, мы также можем попробовать использовать существующую логику здесь:
SELECT t1.*
FROM yourTable t1
WHERE EXISTS (SELECT 1 FROM yourTable t2
WHERE t2.Station = t1.Station AND t2.year = t1.year AND
t2.month = t1.month AND t2.day = t1.day AND t2.id <> t1.id);
Если у вас нет такого столбца id, то здесь мы также можем использовать агрегацию:
SELECT t1.*
FROM yourTable t1
INNER JOIN
(
SELECT Station, year, month, day
FROM yourTable
GROUP BY Station, year, month, day
HAVING COUNT(*) > 1
) t2
ON t2.Station = t1.Station AND t2.year = t1.year AND t2.month = t1.month AND
t2.day = t1.day;
Вы можете использовать предложение exists, чтобы найти точный дубликат с другим номером следующим образом:
Select t.*
From your_table t
Where exists
(select 1 from your_table tt
Where tt.station = t.station
And tt.year = t.year
And tt.month = t.month
And tt.date = t.date
And tt.number <> t.number)
Этот ответ не соответствует требованию, указанному в заголовке вопроса: «SQL: та же дата, но разные значения».