Связывать таблицы по условию в SQL Server - PullRequest
0 голосов
/ 22 марта 2019

Я новичок в SQL Server. Пожалуйста, помогите мне решить мою проблему.

У меня есть две таблицы products и returned. Я хочу получить все названия продуктов и суммы возврата от returned на основе products_id в returned.

С условием, что при отсутствии products_id должно отображаться «еще не введено».

Как в этом примере

enter image description here

Ответы [ 2 ]

1 голос
/ 22 марта 2019

Предположительно, вы хотите что-то вроде этого:

select p.product_name,
       coalesce( convert(varchar(255), sum(r.amount)), 'not entered yet') as returned_amount
from products p left join
     returns r
     on p.product_id = r.product_id
group by p.product_name;

Это предполагает, что returns может иметь несколько строк для одного продукта.

Обратите внимание, что amount предположительно число.В SQL вы обычно просто используете NULL для представления отсутствия возврата и обработки замены строки на прикладном уровне.

1 голос
/ 22 марта 2019

Использование LEFT JOIN:

SELECT p.product_name, 
       isnull(cast(r.amount as varchar(255)), 'not retunrned yet') as returned_amount
FROM products p LEFT JOIN
     returned r
     ON R.products_id = p.products_id;

Это вернет неагрегированные данные, если вы хотите показать итоговое возвращаемое значение, а затем агрегировать ваши данные, используя предложение group by.

SELECT p.product_name, 
       ISNULL(CAST(SUM(r.amount) as varchar(255)), 'not retunrned yet')) as returned_amount
FROM products p LEFT JOIN
     returned r
     ON R.products_id = p.products_id
GROUP BY p.product_name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...