Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Hilfe zu SQL-Abfragen - Verbinden mehrerer Spalten basierend auf einer Bedingung

Sie könnten es etwa so machen (ungetestet):

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

Das Problem, das Sie haben, ist, dass Sie es nicht in der FROM-Klausel angeben können, da die Tabelle, mit der Sie verbinden möchten, datengesteuert ist..