WHERE - 仅当Column2中的值匹配时才显示Column1中的值

时间:2014-03-10 20:48:42

标签: sql-server

我有两列日期/时间数据,来自一个表。 Column1有多个值,是查询中显示的唯一值。 Column2将只有一个日期/时间值与Column1中的最新值匹配。我只对在Column1中显示匹配值感兴趣。

Column1
2014-03-08 00:00:00.000
2014-03-08 00:00:00.000
2014-03-08 09:03:00.000
2014-03-10 01:58:00.000

Column2
2014-03-10 01:58:00.000

数据/时间值每天都在变化,因此我实际上无法根据特定时间戳写出where语句。我只是Column1中的最新值,如果它与Column2中的另一个匹配则显示。所以传统的想法是:

WHERE Column1 = 'Column2' 
or
WHERE Column1 >= 'Column2' <-- since it will never be greater

我收到错误:

  

从字符转换日期和/或时间时转换失败   串

。 两个值均为yyyy-mm-dd hh:mm:ss:ms格式。

2 个答案:

答案 0 :(得分:0)

试试这个:

select t1.column1 from table1 t1
inner join table1 t2 on t1.Column1 = t2.Column2

要使where column1 = column2起作用,值必须在同一行。此查询不假设。

你也可以这样做:

select column1 from table1 
where column1 in (select column2 from table1)

示例SQL Fiddle

答案 1 :(得分:0)

删除引号:

 WHERE Column1 = Column2

 WHERE Column1 >= Column2