将单列数据拆分为两列

0 sql sql-server sql-server-2008

Name   time                       type
--------------------------------------------
Abc    2014-01-11 10:41:37.000    In
Abc    2014-01-11 18:12:37.000    Out
def    2014-01-07 18:25:37.000    In
def    2014-01-07 20:00:02.000    Out
Run Code Online (Sandbox Code Playgroud)

如何在SQL Server中按名称和名称拆分此数据?结果应如下所示

Name  IN                        Out
---------------------------------------------------------
Abc   2014-01-11 10:41:37.000   2014-01-11 18:12:37.000
def   2014-01-07 18:25:37.000   2014-01-07 20:00:02.000
Run Code Online (Sandbox Code Playgroud)

请帮我

小智 5

将它们组合在一起(进出)如果这就是你所需要的.然后你可以过滤"in"并始终在那之后找到最近的相应"out".我想这里的答案可能非常复杂或非常简单,具体取决于您的数据(假设是什么以及它们有多脏).

在以下示例中,[log]表包含您的数据.

select name,
    time as [In],
    (select top 1 time from [log] il where il.name=ol.name and il.time>ol.time order by il.time) as [Out]
from [log] ol
where type='in'
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

  • +1...我会指定子查询中的记录应该有'type ='out'. (2认同)