https://i.stack.imgur.com/3vREY.jpg
Я включил пример в ссылку выше. Можете ли вы помочь мне найти количество дней между каждым идентификатором, ЕСЛИ ТИП - "C", а TYPE_ID - 123?
Например - количество дней между ID 313031 составляет 1146 дней (между 20.02.2018 и 01.01.2015), поскольку мы проигнорируем другой ID, потому что он имеет ТИП A.
Какие СУБД вы используете? (Что касается даты / времени, многие продукты далеки от ANSI SQL.)
Предоставьте более подробную информацию
@jarlh Спасибо. Это мой первый пост, поэтому мне не разрешили ничего прикреплять. Они разрешили только ссылку.
Прикреплять ничего не нужно, просто отредактируйте свой вопрос. Запишите образцы данных в соответствующие столбцы. Когда закончите, отметьте эту часть и нажмите {}
- готово!
Сначала вам нужно определить записи, которые вы хотите сравнить. Например, вы можете использовать MIN (дата) и MAX (дата), но это действительно зависит от ваших данных.
Затем, чтобы определить разницу, вы можете просто вычесть даты
Так, например, если вы хотите сравнить первую и последнюю дату для данного идентификатора:
Select ID,
Min(Date),
MAX(Date),
Min(Date) - MAX(Date) as difference_in_days
From your_table
WHERE TYPE = 'C' and TYPE_ID = 123
GROUP BY ID
это будет работать:
select id,max1-min1 from (select max(date) as max1,min(date) as min1,id from tablename
where type='C' group by id )
Спасибо! Это очень полезно. Можете ли вы показать способ показать количество дней между каждой датой (без максимума)? Спасибо!
количество дней между датами ??? какие две даты вы хотите ?? потому что в вашем столе много дат ??
Например, ID 313032 - разница между 01.01.2015, 21.01.2016 и 20.03.2018.
@ D.SQL select id,max1-min1 from (select max(date) as max1,min(date) as min1,id from tablename where type='C' group by id ) where id=313032;
просто отфильтруйте вышеуказанный запрос по id !!!!
Спасибо! Но это не показывает все даты в строках, только минимальную и максимальную. Может ли он показать каждую дату и даты между каждой строкой?
@ D.SQL, поэтому, когда присутствуют три даты, вам нужно два вывода, две разницы, не так ли ??
да! но этот запрос только показывает разницу между 20.03.2018 и 01.01.2015
создать временную таблицу с действительными (type = 'C') идентификаторами и датами. Добавить номер - раздел по ID, упорядочить по дате. Затем присоединитесь к этой таблице, используя id = id и rownr = rownr-1. Это смещает даты на 1 запись, так что теперь вы можете выполнить dateiff.
Большинству людей здесь нужны образцы данных и ожидаемый результат в виде форматированного текста, а не изображений или ссылок на изображения.