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

Wyodrębnij kolumnę DB i podziel, aby znaleźć inny wynik tabeli

Powiedziałbym, że zgrabne myślenie. Oto zapytanie o zrobienie czegoś takiego

SELECT 
t1.temp_id
   --  ... put your column list here from t2 and t3 here like t2.name
FROM table1 t1 
  LEFT JOIN table2 t2 
     ON CAST(LEFT(t1.temp_id,CHARINDEX(':',t1.temp_id)-1) AS INT)=t2.ID
  LEFT JOIN table3 t3 
     ON CAST(RIGHT(t1.temp_id,CHARINDEX(':',REVERSE(t1.temp_id))-1) AS INT)=t3.ID

Oto mały skrypt do testowania tego również

create table table1 (temp_id varchar(10))
insert into table1 values('1:1'),('21:2'),('1:22'),('1:'),(':2')

create table table2 (id int, value varchar(2))
insert into table2 values (1,'1'),(21,'21'),(1,'1')

create table table3 (id int, value varchar(2))
insert into table3 values (1,'1'),(2,'2'),(22,'22')

Wyjście PS:Zwróć uwagę na null obsługa danych wyjściowych




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Relacja klucza podstawowego i indeksu klastrowego

  2. Jak dodać kolumnę obliczeniową w tabeli SQL Server — samouczek SQL Server / T-SQL, część 47

  3. Rozwiązywanie problemów z wydajnością procesora SQL Server

  4. Limit rozmiaru VARCHAR w arkuszach kalkulacyjnych Excel

  5. Usługi raportowania SQL 2005, jeśli sprawdź, czy nie ma wartości null