Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Pomoc do zapytań SQL — łączenie wielu kolumn na podstawie warunku

Możesz to zrobić w ten sposób (nieprzetestowane):

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

Problem, który masz, polega na tym, że ponieważ tabela, do której chcesz dołączyć, jest oparta na danych, nie możesz jej określić w klauzuli FROM.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wygenerować zakres dat w SQL Server

  2. SQL Server 2005/2008 Grupuj według instrukcji z parametrami bez użycia dynamicznego SQL?

  3. SQL Server:Umieść zestaw wyników procedury składowanej w zmiennej tabeli bez określania jej schematu

  4. Scal wartości wierszy w CSV (vel GROUP_CONCAT dla SQL Server)

  5. Pobierz listę wszystkich pustych i nie zerowych kolumn w bazie danych SQL Server — samouczek SQL Server / T-SQL, część 53