简体   繁体   English

来自 2 个不同表的 DISTINCT 列

[英]DISTINCT columns from 2 different tables

I have 2 tables with similar information.我有 2 个包含类似信息的表。 Let's call them DAILYROWDATA and SUMMARYDATA .我们称它们为DAILYROWDATASUMMARYDATA

Table DAILYROWDATADAILYROWDATA

NIP  NAME   DEPARTMENT
A1   ARIA   BB
A2   CHLOE  BB
A3   RYAN   BB
A4   STEVE  BB

Table SUMMARYDATA表格SUMMARYDATA

NIP  NAME   DEPARTMENT  STATUSIN                STATUSOUT
A1   ARIA   BB          1/21/2020  8:06:23 AM   1/21/2020  8:07:53 AM
A2   CHLOE  BB          1/21/2020  8:16:07 AM   1/21/2020  9:51:21 AM
A1   ARIA   BB          1/22/2020  9:06:23 AM   1/22/2020  10:07:53 AM
A2   CHLOE  BB          1/22/2020  9:16:07 AM   1/22/2020  10:51:21 AM
A3   RYAN   BB          1/22/2020  8:15:03 AM   1/22/2020  9:12:03 AM

And I need to combine these two tables and show all data in table DAILYROWDATA and set the value if STATUSIN = NULL and STATUSOUT = Null then write 'NA'.我需要组合这两个表并显示表DAILYROWDATA所有数据,并在STATUSIN = NULL 和STATUSOUT = Null 时设置值,然后写入“NA”。 This is the output that I meant:这是我的意思的输出:

NIP  NAME   DEPARTMENT  STATUSIN                STATUSOUT
A1   ARIA   BB          1/21/2020  8:06:23 AM   1/21/2020  8:07:53 AM
A2   CHLOE  BB          1/21/2020  8:16:07 AM   1/21/2020  9:51:21 AM
A3   RYAN   BB          NA                      NA
A4   STEVE  BB          NA                      NA
A1   ARIA   BB          1/22/2020  9:06:23 AM   1/22/2020  10:07:53 AM
A2   CHLOE  BB          1/22/2020  9:16:07 AM   1/22/2020  10:51:21 AM
A3   RYAN   BB          1/22/2020  8:15:03 AM   1/22/2020  9:12:03 AM
A4   STEVE  BB          NA                      NA

I need to add some condition, so, i wanna set the value STATUSIN = NULL just when there is no NIP,NAME,DEPARTMENT,STATUSIN,STATUSOUT in one date.. so, that's can be multiple我需要添加一些条件,所以,我想在一个日期中没有NIP,NAME,DEPARTMENT,STATUSIN,STATUSOUT时设置值STATUSIN = NULL .. 所以,这可以是多个

You want a left join to bring the two tables together.您需要一个left join将两个表放在一起。 The trickier part is that you need strings in order to represent the 'NA' :棘手的部分是您需要字符串来表示'NA'

select drd.*,
       coalesce(cast(statusin as varchar(255)), 'NA') as statusin,
       coalesce(cast(statusout as varchar(255)), 'NA') as statusout
from DAILYROWDATA drd left join
     SUMMARYDATA sd
     on drd.nip = sd.nip;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM