如何根据日期显示数据

本文关键字:显示 数据 日期 何根 | 更新日期: 2023-09-27 18:32:23

在我的数据库中有一个名为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。如何修改 where 条件,以便获得正确的输出。

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

如何根据日期显示数据

您希望那些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

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