我如何比较同一列中的两个日期并获得最旧的日期?
How can i compare two dates in the same column and get the oldest?
我是 SQL 的新手,我收到了一个很好的任务。
任务是:
我有两张表,一张叫做 TICKETS,另一张叫做 LOGS。
门票:
编号 |门票 | Open_Date
10 | 40000 | 2015-03-01 11:00:00
11 | 40001 | 2015-03-01 12:00:00
12 | 40002 | 2015-03-01 13:00:00
13 | 40003 | 2015-03-01 14:00:00
14 | 40004 | 2015-03-01 15:00:00
日志:
编号 | Ticket_id | Time_Stamp |说明
01 | 10 | 2015-03-01 11:10:00|进行中
02 | 10 | 2015-03-01 11:15:00|进行中
03 | 10 | 2015-03-01 11:20:00|已转移
04 | 11 | 2015-03-01 12:10:00|进行中
05 | 11 | 2015-03-01 12:15:00|已转移
06 | 11 | 2015-03-01 12:20:00|进行中
07 | 12 | 2015-03-01 13:05:00|已转移
08 | 12 | 2015-03-01 13:10:00|进行中
09 | 12 | 2015-03-01 13:15:00|进行中
10 | 13 | 2015-03-01 14:05:00|已转移
11 | 13 | 2015-03-01 14:10:00|已转移
12 | 13 | 2015-03-01 14:15:00|进行中
13 | 14 | 2015-03-01 15:10:00|已转移
14 | 14 | 2015-03-01 15:15:00|进行中
15 | 14 | 2015-03-01 15:20:00|已转移
如表中所示,一张票据有很多日志。我需要做的是找到第一个描述为 "In Progress" 的日志并获取它的日期(最早的)。如果它出现在 "Transfered" 日志之后,获取日志 "Transfered" 的日期作为票证的 "Open_Date",然后获取第一个日志 "In Progress" 的日期。
给我的查询只带来第一个 "In Progress" 日志:
`Select
Tickets.ticket,
Tickets.Open_Date,
Logs.Description,
Logs.Time_Stamp
From
Tickets LEFT JOIN Logs ON Tickets.ID = Logs.Ticket_id
WHERE
Logs.Time_Stamp = (Select MIN(Logs_2.Time_Stamp)
From Logs AS Logs_2
Where Logs_2.Description = 'In Progress')
And Logs.Time_Stamp < '2015-03-01 14:30:00'
And Logs.Time_Stamp > '2015-03-01 10:00:00'
Group By
Tickets.ticket,
Tickets.Open_Date,
Logs.Description,
Logs.Time_Stamp`
我希望我已经清楚我的问题:)
有人可以帮助我吗?
谢谢
我猜您实际上并不想要前一行/下一行的值?
(http://blog.sqlauthority.com/2013/09/22/sql-server-how-to-access-the-previous-row-and-next-row-value-in-select-statement/ )
但查询 ID / Ticket_ID 并按日期排序?
( sql query to get earliest date )
我是 SQL 的新手,我收到了一个很好的任务。
任务是:
我有两张表,一张叫做 TICKETS,另一张叫做 LOGS。
门票:
编号 |门票 | Open_Date
10 | 40000 | 2015-03-01 11:00:00
11 | 40001 | 2015-03-01 12:00:00
12 | 40002 | 2015-03-01 13:00:00
13 | 40003 | 2015-03-01 14:00:00
14 | 40004 | 2015-03-01 15:00:00
日志:
编号 | Ticket_id | Time_Stamp |说明
01 | 10 | 2015-03-01 11:10:00|进行中
02 | 10 | 2015-03-01 11:15:00|进行中
03 | 10 | 2015-03-01 11:20:00|已转移
04 | 11 | 2015-03-01 12:10:00|进行中
05 | 11 | 2015-03-01 12:15:00|已转移
06 | 11 | 2015-03-01 12:20:00|进行中
07 | 12 | 2015-03-01 13:05:00|已转移
08 | 12 | 2015-03-01 13:10:00|进行中
09 | 12 | 2015-03-01 13:15:00|进行中
10 | 13 | 2015-03-01 14:05:00|已转移
11 | 13 | 2015-03-01 14:10:00|已转移
12 | 13 | 2015-03-01 14:15:00|进行中
13 | 14 | 2015-03-01 15:10:00|已转移
14 | 14 | 2015-03-01 15:15:00|进行中
15 | 14 | 2015-03-01 15:20:00|已转移
如表中所示,一张票据有很多日志。我需要做的是找到第一个描述为 "In Progress" 的日志并获取它的日期(最早的)。如果它出现在 "Transfered" 日志之后,获取日志 "Transfered" 的日期作为票证的 "Open_Date",然后获取第一个日志 "In Progress" 的日期。
给我的查询只带来第一个 "In Progress" 日志:
`Select
Tickets.ticket,
Tickets.Open_Date,
Logs.Description,
Logs.Time_Stamp
From
Tickets LEFT JOIN Logs ON Tickets.ID = Logs.Ticket_id
WHERE
Logs.Time_Stamp = (Select MIN(Logs_2.Time_Stamp)
From Logs AS Logs_2
Where Logs_2.Description = 'In Progress')
And Logs.Time_Stamp < '2015-03-01 14:30:00'
And Logs.Time_Stamp > '2015-03-01 10:00:00'
Group By
Tickets.ticket,
Tickets.Open_Date,
Logs.Description,
Logs.Time_Stamp`
我希望我已经清楚我的问题:)
有人可以帮助我吗?
谢谢
我猜您实际上并不想要前一行/下一行的值? (http://blog.sqlauthority.com/2013/09/22/sql-server-how-to-access-the-previous-row-and-next-row-value-in-select-statement/ )
但查询 ID / Ticket_ID 并按日期排序? ( sql query to get earliest date )