I have two table, [table a] and [table b]. So basically, I need work_week from [table a] therefore I want to join the columns together, shift_begin_datetime from [table a] and shift_start_datetime from [table b] as both of them have the same data type but they have different name.
[table a] [table b]
| shift_begin_datetime | work_week | | shift_start_datetime | .. |
| 2002-06-29 07:00:00 | 34 | | 2003-07-29 07:00:00 | .. |
| 2002-06-30 07:00:00 | 35 | | 2003-07-30 07:00:00 | .. |
| 2002-06-31 07:00:00 | 36 | | 2003-07-31 07:00:00 | .. |
I want both of the column to be renamed as shift_start_dt and after combining the result should be something like this.
[result]
| shift_start_dt |
| 2002-06-29 07:00:00 |
| 2002-06-30 07:00:00 |
| 2002-06-31 07:00:00 |
| 2003-07-29 07:00:00 |
| 2003-07-30 07:00:00 |
| 2003-07-31 07:00:00 |
And is it possible to display work_week and …….. (representing the rest of the data)?
| shift_start_dt | work_week | null? |
| 2002-06-29 07:00:00 | 34 | null? |
| 2002-06-30 07:00:00 | 35 | null? |
| 2002-06-31 07:00:00 | 36 | .. |
| 2003-07-29 07:00:00 | null? | .. |
| 2003-07-30 07:00:00 | null? | .. |
| 2003-07-31 07:00:00 | null? | .. |
I was also wondering if there is no data for the certain column, will it return as null?
I have tried union all for both of the table into a temp table, but I do not know how can I get work_week out of it. But I think union cant allow me to get work_week out of it, therefore, I’m not sure what else solution I can do. Here’s what I did:
select
shift_start_datetime
into #datetime
from
(select distinct
shift_begin_datetime as shift_start_datetime
from table a
union all
select distinct
shift_start_datetime as shift_start_datetime
from table b
) as dt
Advertisement
Answer
See if this helps you too, COALESCE
and FULL OUTER JOIN
are used:
SELECT COALESCE(a.shift_begin_datetime, b.shift_start_datetime) AS shift_start_dt,
a.work_week,
b.otherFields
FROM tableA AS a
FULL OUTER JOIN tableB AS b
ON a.shift_begin_datetime = b.shift_start_datetime