SQL-запросы Adventure Works 2014

Я пишу SQL-запрос, используя базу данных Adventure Works 2014.

Я хочу показать всех клиентов и сколько заказов у ​​каждого клиента.

Я пытался написать каждый оператор select отдельно (см. ниже), но хотел бы иметь возможность объединить оба запроса в один.

select  s.CustomerID ,p.FirstName +' '+p.LastName as Name 
from Sales.Customer s,Person.Person p 
where s.CustomerID=p.BusinessEntityID
order by s.CustomerID


select CustomerID ,count(SalesOrderID) as OrdersCount
from Sales.SalesOrderHeader
group by CustomerID

person Anthony    schedule 30.10.2017    source источник
comment
Продвигайте использование явного JOIN синтаксиса, Аарон Бертран написал хорошую статью Плохие привычки, от которых следует избавиться: использование JOIN в старом стиле об этом.   -  person Juan Carlos Oropeza    schedule 31.10.2017
comment
Возможный дубликат общего количества заказов Northwind SQL на одного клиента   -  person Zahra    schedule 31.10.2017


Ответы (3)


Нажмите здесь, чтобы запросить изображение

Я добавил CONCAT просто как что-то новое для вас, вероятно. В любом случае предложение OVER(PARTITION BY column_name) использовалось в качестве замены для GROUP BY, поскольку вы печатаете больше столбцов, чем позволяет предложение GROUP BY.

person Zabi Sidiqkhil    schedule 02.01.2019
comment
Добро пожаловать в Stackoverflow! Пожалуйста, не добавляйте код (в данном случае полный запрос) в виде изображений. Это делает невозможным его копирование или внесение изменений в ваш пост напрямую :) - person geisterfurz007; 03.01.2019

Таблица Sales.Customer References:Person.Person (PersonID -> BusinessEntityID)

SELECT s.CustomerID 
        ,p.FirstName +' '+p.LastName as Name
        ,COUNT(so.SalesOrderDetailID)
 FROM Sales.Customer s
 JOIN Person.Person p 
   ON s.PersonID=p.BusinessEntityID
 LEFT JOIN Sales.SalesOrderHeader h 
   ON h.CustomerID = s.CustomerID
 LEFT JOIN Sales.SalesOrderDetail so
   ON so.SalesOrderID = h.SalesOrderID
 GROUP BY s.CustomerID ,
        p.FirstName +' '+p.LastName
 order by s.CustomerID
person 谭震彪    schedule 29.06.2020

person    schedule
comment
спасибо за ответ, проблема в том, что многие клиенты не делали никаких заказов, поэтому они не отображаются с этим запросом - person Anthony; 31.10.2017
comment
@GeorgeKouki Попробуйте left join - person Simon; 31.10.2017