In[]:=
tab1=Tabular[​​{{"001",1,2,3},{"002",4,5,6},{"003",7,6,7},{"004",8,9,10},{"005",8,9,10}},​​{"ID","num 1","num 2","num 3"}]
Out[]=
Tabular
Row count: 5
Column count: 4

In[]:=
tab2=Tabular[​​{{"001",0.1,0.3},{"002",0.99,0.1},{"003",1.01,1.67},{"005",0.4,0.3}},​​{"ID","num 4","num 5"}]
Out[]=
Tabular
Row count: 4
Column count: 3

Method 1:
data1={{"001",1,2,3},{"002",4,5,6},{"003",7,6,7},{"004",8,9,10},{"005",8,9,10}};​​headers1={"ID","num 1","num 2","num 3"};​​​​​​data2={{"001",0.1,0.3},{"002",0.99,0.1},{"003",1.01,1.67},{"005",0.4,0.3}};​​headers2={"ID","num 4","num 5"};
ds1=Dataset[AssociationThread[headers1,#]&/@data1];​​ds2=Dataset[AssociationThread[headers2,#]&/@data2];
In[]:=
joinedDataset=JoinAcross[ds1,ds2,"ID","Left"];
In[]:=
joinedDataset
Out[]=
ID
num 1
num 2
num 3
num 4
num 5
001
1
2
3
0.1
0.3
002
4
5
6
0.99
0.1
003
7
6
7
1.01
1.67
004
8
9
10
—
—
005
8
9
10
0.4
0.3