Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Aide sur les requêtes SQL - Joindre plusieurs colonnes en fonction d'une condition

Vous pourriez faire quelque chose comme ceci (non testé):

select 
  t.Buyer, 
  t.Seller, 
  case when t.Buyer like 'B%' THEN (select BookName from Book where BookId = t.Buyer)
                              ELSE (select CpName from Counterparty where CPId = t.Buyer)
  end BuyerName,
  case when t.Buyer like 'B%' THEN (select DeskName from Desk where BookId = t.Buyer)
                              ELSE NULL
  end BuyerDeskName,
  case when t.Seller like 'B%' THEN (select BookName from Book where BookId = t.Seller)
                               ELSE (select CpName from Counterparty where CPId = t.Seller)
  end SellerName,
  case when t.Seller like 'B%' THEN (select DeskName from Desk where BookId = t.Seller)
                               ELSE NULL
  end SellerDeskName,
from 
  Trade t

Le problème que vous avez est que, puisque la table à laquelle vous souhaitez vous joindre est pilotée par les données, vous ne pouvez pas le spécifier dans la clause FROM..