У меня есть этот запрос:Выберите все данные из другой таблицы, даже если соответствующее значение из другой таблицы NULL
SELECT city.CITY_NAME,
SUM(case when c.CUSTOMER_ID=o.CUSTOMER_ID and o.ORDER_ID=od.ORDER_ID
then od.TOTAL_AMT_PER_ITEM
else 0 end) AS TOTAL_AMT_PER_ITEM
FROM [ORDER] o
INNER JOIN ORDER_DETAILS od
ON o.ORDER_ID = od.ORDER_ID
INNER JOIN CUSTOMER c
ON o.CUSTOMER_ID = c.CUSTOMER_ID
INNER JOIN CUSTOMER_ADDRESS ca
ON ca.CUSTOMER_ID = c.CUSTOMER_ID
INNER JOIN CITY city
ON ca.CITY_ID = city.CITY_ID
GROUP BY city.CITY_NAME
Я новичок в SQL SERVER. Этот запрос отображает только CITY_NAME
, который имеет соответствующее значение TOTAL_AMT_PER_ITEM
. Мне нужно отображать все CITY_NAMEs
в базе данных, даже если их соответствующее значение равно NULL. Какая работа для этого? Кто-нибудь может мне помочь? Благодаря!
Вы должны [** LEFT JOIN **] (http://www.w3schools.com/sql/sql_join_left.asp) вместо 'ВНУТРЕННЕГО JOIN' –
мне просто нужно, чтобы заменить все внутренние соединения с ЛЕВЫМ JOIN и ? –
И вам не нужен оператор case в вашем SUM. Вы заботитесь об этом в своих объединениях. – scsimon