Добавление одной строки кода удаляет всю таблицу SQL
Я пытаюсь исправить некоторые даты, которые у меня есть в моей таблице SQL. Для контекста я соединил две таблицы: "Детали сделки" и "Детали сделки 2". Один из столбцов в "Сведениях о сделке 2" - это "START_DATE" с датами начала 2000-х годов в формате 2010-05-08. Я хочу сделать каждую START_DATE до 2018-06-22 до 2018-06-22. В настоящее время мой код ниже:
SELECT "Trade Details 2".Portfolio,
"Trade Details 2".CONTRACT_ID,
DATE("Trade Details 2".START_DATE) as START_DATE,
DATE(substr("Trade Details 2".MATURITY_DATE, 0, 5) || '-' || substr("Trade
Details 2".MATURITY_DATE, 5,2) || '-' || substr("Trade Details
2".MATURITY_DATE, 7, 9)) as MATURITY_DATE,
"Trade Details 2".NOTIONAL1,
"Trade Details 2".CONTRACT_NPV,
"Trade Details".TERM,
MAX(date('2018-06-22'), date("Trade Details 2".start_date))
FROM "Trade Details 2"
JOIN "Trade Details"
WHERE "Trade Details 2".CONTRACT_ID="Trade Details".FCC_ID and
("Trade Details 2".NOTIONAL1 > "0.0") and
("Trade Details 2".MATURITY_DATE > DATE(substr('20180602', 0, 5) || '-' ||
substr('20180602', 5,2) || '-' || substr('20180602', 7, 9)) )
ORDER BY CONTRACT_ID asc
Это в теории должно работать, я думаю, но по некоторым причинам это не так. Я добавил строку max(date), и моя таблица перешла с 19000 строк на 0. Это единственное, что я изменил, добавив эту строку, чтобы исправить даты, и это полностью исключило мою таблицу. Я написал строку макс неправильно?
1 ответ
При добавлении строки:
MAX(date('2018-06-22'), date("Trade Details 2".start_date))
Вызвавшая проблему, вы можете рассмотреть обратную логику:
MIN(date('2018-06-22'), date("Trade Details 2".start_date))
Так как вы хотите найти START_DATE
меньше или равно 2018-06-22
, MAX()
вернет наибольшее значение агрегата, в этом случае он вернет все с START_DATE
равно или больше, чем ваша цель. MIN()
возвращает наименьшее значение в совокупности. Кроме того, так как вы делаете:
DATE("Trade Details 2".START_DATE) as START_DATE
... вы можете упростить ваш запрос, используя его следующим образом:
MIN(date('2018-06-22'), START_DATE)