Récupérer des données de deux tables différentes et les afficher dans une valeur de colonne

J'ai 2 tables comme

id item deliveredon 1 x 12/06/2016 2 y 14/06/2016 3 z 18/06/2016 

et

 id item Returnedon 4 a 20/06/2016 5 b 15/06/2016 6 c 22/06/2016 

maintenant j'ai seulement id est comme 1, 3, 5, 6 dans la requête (plainte) je veux la sortie comme

 id item status date 1 x delivered 12/06/2016 3 z delivered 18/06/2016 5 b returned 15/06/2016 6 c returned 22/06/2016 

Requête sql pour la sortie ci-dessus dans sql server 2008. J'ai essayé quelques instructions JOINS et CASE. Ces identifiants proviennent d'une valeur de cellule Excel dans une colonne.

Que diriez-vous de sélectionner à partir d'une union où vous spécifiez le statut par table:

 select id , item , status , date from (select id, item, deliveredon as date, 'delivered' as status from table1 union all select id, item, Returnedon, 'returned' from table2 ) i where id in (1, 3, 5, 6) 
 select Id, Item, "Status" = case when R.ReturnedOn is not null then 'returned' when D.DeliveredOn is not null then 'delivered' end, "Date" = ISNULL(R.ReturnedOn, D.DeliveredOn) from [DeliveryDates] D full outer join [ReturnedDates] R on R.Id = D.Id where Id in (1,3,5,6) 

Personnellement, voici comment j'implémenterais votre design:

 table [Shipments] Id item DeliveredDate ReturnDate 1 x 12/06/2016 NULL 2 y 14/06/2016 NULL 3 z 18/06/2016 NULL 4 a NULL 20/06/2016 5 b NULL 15/06/2016 6 c NULL 22/06/2016 

alors ça deviendrait:

 select Id, Item, "Status" = case when ReturnedOn is not null then 'returned' when DeliveredOn is not null then 'delivered' end, "Date" = ISNULL(ReturnedOn, DeliveredOn) from [Shipments] where Id in (1,3,5,6) 

Peut-être quelque chose comme ça?

 SELECT * FROM ( SELECT id, item, status, deliveredon as date FROM TableA UNION SELECT id, item, status, Returnedon as date FROM TableB ) as TableAB Where id IN(1, 3, 5, 6) 

Je ne connais pas votre critère pour sélectionner cet identifiant, mais si vous le choisissez manuellement, cela fonctionne parfaitement.

 (select id,item,'delivered' as status,deliveredon from #table1 where id in (1,3,5,6)) UNION (select id,item,'returned' as status,Returnedon from #table2 where id in (1,3,5,6)) 

ou

  select id, item, status, date from (select id, item, 'delivered' as status, deliveredon as date from #table1 UNION select id, item,'returned' as status, Returnedon from #table2 ) t where id in (1, 3, 5, 6)