在条件Sql Server

时间:2015-08-31 22:06:41

标签: sql sql-server tsql

我有一个表格,其中包含最多5个不同组织的电子邮件对话。我希望能够找到一个人重新收到电子邮件的最短日期,然后使用该最短日期仅返回该最短日期之后的所有电子邮件。实施例

ID Date  To   BodyofEmail
A 1/1/14 Tom  hi hello
A 1/2/14 ABC  Afternoon
A 1/6/14 Tom  hi hello
B 1/2/14 ABC  Afternoon
B 1/3/14 Tom  hi hello
C 1/2/14 Tom  Afternoon
C 1/4/14 ABC  hi hello
C 1/8/14 Tom  Afternoon

我想要的是,返回首次发送到ABC后发送的所有电子邮件:

ID Date  To   BodyofEmail
A 1/2/14 ABC  Afternoon
A 1/6/14 Tom  hi hello
B 1/2/14 ABC  Afternoon
B 1/3/14 Tom  hi hello
C 1/4/14 ABC  hi hello
C 1/8/14 Tom  Afternoon

如何在查询中设置最小日期,然后在Sql Server的where / condition子句中使用它。

2 个答案:

答案 0 :(得分:1)

您可以先选择每个人的最短日期,然后用它来选择该日期后表格中的所有列。

with mindate as 
(select id, min(date) as mndt from tablename group by id)
select t.* 
from tablename t join mindate m 
on t.id = m.id and t.date > m.mndt

答案 1 :(得分:0)

这样做你想要的吗?

select c.*
from conversations c
where c.date >= (select min(c2.date) from conversations c2 where c2.to = 'ABC')