#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)