Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql T-SQL合并具有相似日期时间的行对_Tsql_Merge - Fatal编程技术网

Tsql T-SQL合并具有相似日期时间的行对

Tsql T-SQL合并具有相似日期时间的行对,tsql,merge,Tsql,Merge,是否可以合并具有类似的行对尝试以下操作: select cast(DATEPART(hour, DateColumn) as varchar(2)) + ':' + cast(DATEPART(minute, DateColumn) as varchar(2)) + ':' + cast(DATEPART(second, DateColumn) as varchar(2)) as DateTime, max(filename) as FileName, Max(event) as event f

是否可以合并具有类似的行对尝试以下操作:

select cast(DATEPART(hour, DateColumn) as varchar(2)) + ':' + cast(DATEPART(minute, DateColumn) as varchar(2)) + ':' + cast(DATEPART(second, DateColumn) as varchar(2)) as DateTime,
max(filename) as FileName, Max(event) as event
from table
group by 
cast(DATEPART(hour, DateColumn) as varchar(2)) + ':' + cast(DATEPART(minute, DateColumn) as varchar(2)) + ':' + cast(DATEPART(second, DateColumn) as varchar(2)) as DateTime

…好的,必须有更好的方法来收回未合并的结果。但这应该可以用?

它非常适合修改合并,但只是想知道如何在查询中找到没有邻居和联合选择的行…@buggy08是的,我在中添加了这一点。理论上,这应该行得通,但我觉得很难看。错过了第二部分的选择,/dohNo问题:-它可以正常工作。我需要它来进行一些临时分析,因此感谢您的帮助…基本上是一个很好的主意,但是日期时间值可能是例如:08:30:14.990和08:30:15:010,所以按照您的建议,通过铸造秒数不会发现它是成对的,尽管它们是。无论如何,谢谢你。
DateTime                  FileName  Event
============================================
2011-04-04 12:30:15.000   File_A    Deleted
2011-04-04 15:30:37.000   File_A    Created
2011-04-05 08:30:25.000   File_A    Modified
select cast(DATEPART(hour, DateColumn) as varchar(2)) + ':' + cast(DATEPART(minute, DateColumn) as varchar(2)) + ':' + cast(DATEPART(second, DateColumn) as varchar(2)) as DateTime,
max(filename) as FileName, Max(event) as event
from table
group by 
cast(DATEPART(hour, DateColumn) as varchar(2)) + ':' + cast(DATEPART(minute, DateColumn) as varchar(2)) + ':' + cast(DATEPART(second, DateColumn) as varchar(2)) as DateTime
SELECT t1.DateTime, t1.FileName, 'Modified' as Event
FROM Table t1
JOIN Table t2 ON DATEDIFF(millisecond, t1.DateTime, t2.DateTime) < 500
              AND t1.Event = 'Deleted' AND t2.Event = 'Created'
UNION ALL
SELECT t3.DateTime, t3.FileName, t3.Event
FROM Table t3 
WHERE NOT EXISTS(SELECT 1 
                 FROM Table t4
                 JOIN Table t5 ON DATEDIFF(millisecond, t4.DateTime, t5.DateTime) < 500
                               AND t4.Event = 'Deleted' AND t5.Event = 'Created' 
                               AND t3.ID IN (t4.ID, t5.ID)
)