如何根据日期显示数据?

时间:2013-09-23 16:35:44

标签: c# sql

在我的数据库中有一个名为talltree_master的表。我想只显示那些从一开始就没有被阉割的记录(tree_no field)。 dtlastemas字段跟踪去雄日期,talltree_id是表talltree_master的主键。 对于前者请考虑以下数据

tree_no | talltree_id |dtlastemas

1       |      1      |    2008-01-09                 
2       |      2      |                 
3       |      3      |    2010-05-06
4       |      4      |                       
1       |      5      |               
5       |      6      |    2001-02-06
2       |      7      |    2009-05-03                   
3       |      8      |    2010-01-01           
6       |      9      |              

注意:空白表示在完成去雄时特定树没有被去除。 我想显示的只是tree_no 4和6,因为这些树是唯一一个从一开始就没有被阉割的树,因为tree_no 1和2之前已被阉割过。 但是下面的查询显示tree_no 1,2,4和6.我如何修改条件,以便我得到正确的输出。

string query = "select tree_no from talltree_master";
       query += " where dtlastemas is NULL";

2 个答案:

答案 0 :(得分:0)

您希望那些dtlastemas为空的记录从来没有dtlastemas非空。像这样:

select tree_no
from talltree_master o
where o.dtlastemas is null
    and not exists (
        select *
        from talltree_master i
        where i.tree_no = o.tree_no
              and dtlastemas is not null)

SQL小提琴:http://sqlfiddle.com/#!3/371db/6

答案 1 :(得分:0)

SELECT tree_no, MAX(dtlastemas)
FROM talltree_master
WHERE MAX(dtlastemas) IS NULL
GROUP BY tree_no