2017-07-25 65 views
-3

我想获得person_discharge_date上具有NULL值的人员列表,但我还需要考虑create_date(获取其最新值),以便该人员的姓名不会显示两次。获得结果为空不包含

对于我的问题,你怎么也查询它将只显示person_discharge_date空值也基于最新的create_date?

我无法只显示在person_discharge_date上有空的值,反之亦然。

我进表

IntakeTable 
    intake_id| person_id |person_discharge_date |create_date 
    ---------|------------|------------------------|----------------------- 
    2263  | 2289  |2010-06-28 00:00:00.000 |2012-04-17 13:41:54.503 
    2264  | 2289  |2010-08-28 00:00:00.000 |2012-04-17 13:41:54.547 
    4465  | 4489  |2011-02-12 00:00:00.000 |2012-04-17 13:41:54.563 
    1267  | 1218  |2009-12-11 00:00:00.000 |2012-04-17 13:41:54.707 
    7373  | 2348  |2010-06-03 00:00:00.000 |2012-04-17 13:41:55.297 
    4463  | 4429  |2011-09-20 00:00:00.000 |2012-04-17 13:41:57.133 
    6164  | 6129  |2011-05-18 00:00:00.000 |2012-04-17 13:41:57.143 
    12377 | 1888  |NULL     |2013-01-05 22:12:41.990 
    12378 | 5899  |NULL     |2013-01-05 22:17:02.957 
    12379 | 5899  |NULL     |2013-01-05 22:18:02.957 

这是我一个人的表

PersonTable 
person_id| fname  | 
---------|------------| 
2289  | marge  | 
4489  | shell  | 
1218  | linkoln | 
2348  | abe  | 
4429  | mark  | 
6129  | doom  | 
1888  | lorde  | 
5899  | braddy | 

这是我的查询,但也有一些是与此失踪,因为我需要获得最新的创建日期的人,以便该人不会从结果中显示两次。

select intake_id, person_id, person_discharge_date from intaketable it inner join persontable pt it.person_id = pt.person_id WHERE person_discharge_date IS NOT NULL 
+1

提示:'IS NULL','IS NOT NULL'?也许你应该展示你想要的结果和你尝试过的任何查询。 –

+0

解释你有什么“麻烦”。 –

+0

我不知道如何查询它将只显示person_discharge_date上有空值的人,反之亦然(显示结果不包括空值) – Shulz

回答

0

你怎么做一个查询在那里将只包括从person_discharge_date的 结果

检查IS NULLWHERE条件所涉及的上述列说

的空
WHERE person_discharge_date IS NULL 

您可以使用group by并获得像max()一样

select person.*, xxx.person_discharge_date 
from person p join (
select person_id, person_discharge_date, 
    max(create_date) as latest 
from Intake 
where person_discharge_date is null 
group by person_id) xxx on p.person_id = xxx.person_id; 
+0

但我还需要获取person_id的最新create_date,以便它不会显示两次相同的名称。 – Shulz

+1

@Shulz,如果帮助 – Rahul

+0

在'group by'中未包含'person_discharge_date',那么请参阅编辑答案。 – Shulz

0

我想我已经找到了解决这个与拉胡尔两个代码混合的帮助和其他网站

SELECT pi.person_id, 
     pi.intake_id, 
     pi.person_discharge_date, 
     pi.create_date 
    FROM intake pi INNER JOIN (select patient_id, MAX(create_date) 
    as LatestDate FROM intake group by patient_id) 
    pati ON pi.person_id = pati.person_id AND pi.Create_DATE = 
    pati.latestdate 
    WHERE person_discharge_date IS NULL