SQL Server 2005 — объединение двух таблиц и двух столбцов

#sql-server #sql-server-2005

#sql-сервер #sql-server-2005

Вопрос:

В SQL Server 2005, путем объединения двух таблиц в двух столбцах, как мы получаем значение, сопоставляя две колонки первой таблицы двум столбцам второй таблицы двум столбцам и нулевому значению для несоответствующих столбцов?

Ниже приведены примеры таблиц:

Таблица 1:

 City    Vehicle      Count
---------------------------
London  Two wheeler  834
NewYork Four wheeler 60
NewYork Two wheeler  3
Sydney  Four wheeler 514
Sydney  Two wheeler  4551
  

Таблица 2:

 City    Vehicle     Count
---------------------------
London  Two wheeler   5
NewYork Two wheeler   2
Sydney  Two wheeler  16
  

Ожидаемый результат:

 City    Vehicle      Count
---------------------------
London  Two wheeler    5
NewYork Four wheeler   0
NewYork Two wheeler    2
Sydney  Four wheeler   0
Sydney  Two wheeler   16
  

Я сделал это успешно в MS Excel, используя формулу сводной таблицы:

 {=INDEX($L$6:$L$550,MATCH(F6,IF($K$6:$K$550=G6,$J$6:$J$550),0))}
  

Комментарии:

1. Вы спрашиваете, как написать SELECT инструкцию? Вы что-нибудь пробовали или запрашивали код?

Ответ №1:

Вы ищете ЛЕВОЕ СОЕДИНЕНИЕ и ОБЪЕДИНЯЕТЕСЬ:

 SELECT
    t1.city,
    t1.vehicle,
    COALESCE(t2.count,0) as count
FROM
    table_1 t1
LEFT JOIN table_2 t2 ON (t1.city = t2.city AND t1.vehicle = t2.vehicle)