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