Дни, прошедшие с момента получения последней справки

Я пытаюсь создать отчет, показывающий мне последнюю дату, когда клиент подал заявку.

Клиенты могут подать десятки билетов. Я хочу знать, когда был подан последний билет, и показать, сколько дней прошло с тех пор, как они сделали это.

У меня есть следующие поля:

Покупатель,

TICKET_ID,

Date_Closed

Все из той же таблицы "Билеты"

Я думаю, я хочу сделать рейтинг билетов по минимальной дате? Я попробовал этот запрос, чтобы получить что-то, но он дает мне все билеты от клиента. (Я использую SQL в продукте под названием Domo)

select * from (select *, rank() over (partition by "Ticket_id" 
                order by "Date_Closed" desc) as date_order
from tickets ) zd
where date_order = 1

4 ответа

Решение
select Customer, datediff(day, date_closed, current_date) as days_since_last_tkt
from 
(select *, rank() over (partition by Customer order by "Date_Closed" desc) as date_order
from tickets) zd
join tickets t on zd.date_closed = t.date_closed
where zd.date_order = 1

Или вы можете просто сделать

select customer, datediff(day, max(Date_closed), current_date) as days_since_last_tkt
from tickets
group by customer

Чтобы выбрать другие поля

select t.* 
from tickets t
join (select customer, max(Date_closed) as mxdate,
      datediff(day, max(Date_closed), current_date) as days_since_last_tkt
      from tickets
      group by customer) tt 
on t.customer = tt.customer and tt.mxdate = t.date_closed

Это должно быть достаточно просто,

  SELECT customer,
     MAX (date_closed) last_date,
   ROUND((SYSDATE - MAX (date_closed)),0) days_since_last_ticket_logged
    FROM emp
GROUP BY customer

Я бы сделал это с помощью простого подзапроса, чтобы выбрать последнюю закрытую дату для клиента. Тогда сравните это с сегодняшним днем ​​с datediff() чтобы получить количество дней с момента последнего закрытия.

Select 
LastTicket.Customer,
LastTicket.LastClosedDate,
DateDiff(day,LastTicket.LastClosedDate,getdate()) as DaysSinceLastClosed

From    
(select
tickets.customer
max(tickets.dateClosed) as LastClosedDate
from tickets
Group By tickets.Customer) as LastTicket

Основываясь на ответах, это то, что я сделал:

select "Customer",
Max("date_closed") "last_date,

round(datediff(DAY, CURRENT_DATE, max("date_closed")), 0) as "Closed_date"

from tickets

group by "Customer"
ORDER BY "Customer"
Другие вопросы по тегам