我有一个客户和门票的数据库。门票日期范围从2007年到2017年的将来日期。我想运行一个查询,为我提供过去最近的门票和未来最近的门票。如何根据SQL中的GETDATE()输出最后和下一个日期
我最初下面的查询给了我他们的第一次门票和他们的出票日期最远的未来 - 但我想沿着线的东西:
MAX(EVENTDATE),其中(EVENTDATE < GETDATE()) AS LastDate和类似MIN(eventdate)where(eventdate < getdate())AS NEXTDate但我真的不知道如何。据推测它会涉及子查询?
SELECT MAX(Dwh.DimEvents.devEventDate) AS Last_Show, MIN(Dwh.DimEvents.devEventDate) AS First_Show, Dwh.DimClients.dcClientCode, Dwh.DimClients.dcFirstName, Dwh.DimClients.dcLastName
FROM Dwh.FactTickets LEFT OUTER JOIN
Dwh.DimClients ON Dwh.DimClients.dcClientGUID = Dwh.FactTickets.ftClientGuid LEFT OUTER JOIN
Dwh.DimEvents ON Dwh.DimEvents.devGuid = Dwh.FactTickets.ftEventGuid LEFT OUTER JOIN
Dwh.DimShows ON Dwh.DimEvents.devShowGuid = Dwh.DimShows.dshGuid
WHERE (Dwh.FactTickets.ftTicketStatus = 1)
GROUP BY Dwh.DimClients.dcClientCode, Dwh.DimClients.dcFirstName, Dwh.DimClients.dcLastName
嗨Jawad,这似乎没有工作,因为它一直告诉我,'Dwh.FactTickets.ftEventGuid'在选择列表中是无效的,因为它不包含在聚合函数或GROUP BY子句中。我尝试在Group By中添加,但之后它只列出了每个人的每个事件 – wolfgang
我不认为您需要Group By,因为我们已经将聚合函数转换为子选择。由于我没有完整的数据库结构,因此无法在此处进行测试。 –
不幸的是,虽然删除Group By行允许它运行,它仍然给我所有的票日期,而不仅仅是最后一个和下一个。 – wolfgang