Sql 如何选择并插入另一个临时表
我得到了上面的结果 我需要得到如下输出Sql 如何选择并插入另一个临时表,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我得到了上面的结果 我需要得到如下输出 ID LogDate LogTime Mode 1 2017-02-23 19:30:00.0000000 1 4 2017-02-24 08:00:00.0000000 0 更新的问题 实际上,下表是原始表。从这个表中,我需要获得第一个和最后一个记录,并将第一个logtime显示为InTime,将第二个logtime显示为OutTime作为输出 Log
ID LogDate LogTime Mode
1 2017-02-23 19:30:00.0000000 1
4 2017-02-24 08:00:00.0000000 0
更新的问题
实际上,下表是原始表。从这个表中,我需要获得第一个和最后一个记录,并将第一个logtime显示为InTime,将第二个logtime显示为OutTime作为输出
LogDate InTime OutTime
2017-02-23 19:30:00.0000000 08:00:00.0000000
此选择需要primery键 但是
此选择需要primery键 但是 用这个 用这个
这两行有什么共同之处?有身份证吗?如果返回的行数超过2行怎么办?您将如何处理它们?我从1个临时表中选择了第一行和最后一行记录,并获得第一个表结果@Utsav@winner_joiner需要帮助还需要时间差作为另一列@Meysam cheginiw,这两行中常见的是什么?有身份证吗?如果返回的行数超过2行怎么办?您将如何处理它们?我从1个临时表中选择了第一行和最后一行记录,并获得第一个表结果@Utsav@winner_joiner需要帮助还需要时差作为另一列@Meysam Chegini同样需要时差作为另一列@Meysam Chegini同样需要时差作为另一列@Meysam Chegini,您的答案对所有记录都是正确和完美的输出。您的答案对所有记录都是正确和完美的输出。
ID LogDate LogTime InoutMode
1 2017-02-23 19:30:00.0000000 1
2 2017-02-23 23:00:00.0000000 0
3 2017-02-23 23:30:00.0000000 1
4 2017-02-24 08:00:00.0000000 0
SELECT LogDate,
LogTime AS InTime,
(
SELECT TOP 1 t1.LogTime
FROM yourTable AS t1
WHERE Mode = 0
) AS OutTime FROM yourTable WHERE Mode = 1
WITH cte AS
(SELECT t.*,
row_Number() over (
ORDER BY logdate,logtime) AS inc,
row_Number() over (
ORDER BY logdate DESC,logtime DESC) AS dec
FROM table1 t)
SELECT t1.logdate,
t1.logtime AS intime,
t2.logtime AS outtime
FROM
(SELECT logdate,
logtime,
inc
FROM cte
WHERE inc=1) t1
INNER JOIN
(SELECT logdate,
logtime,dec
FROM cte
WHERE dec=1) t2 ON t1.inc=t2.dec