Если SalesOrderDetail.SalesOrderID является внешним ключом для SalesOrderHeader.SalesOrderID, тогда обеспечивается ссылочная целостность. Поэтому в этом случае это можно сделать без подключения к SalesOrderHeader. И просто группа по SalesOrderDetail.SalesOrderID
SELECT TOP 1
d.SalesOrderID,
COUNT(*) as AmountItems
FROM Sales.SalesOrderDetail d
GROUP BY d.SalesOrderID
ORDER BY COUNT(*) DESC;
Но если SalesOrderDetail.SalesOrderID не будет внешним ключом? И вы хотите только рассчитывать на SalesOrderID, который действительно существует в SalesOrderHeader? Тогда присоединение к SalesOrderHeader обеспечит это.
SELECT TOP 1
d.SalesOrderID,
COUNT(*) as AmountItems
FROM Sales.SalesOrderDetail d
JOIN SalesOrderHeader h ON h.SalesOrderID = d.SalesOrderID
GROUP BY d.SalesOrderID
ORDER BY COUNT(*) DESC;
Предположим, что SalesOrderID является основным ключом для SalesOrderHeader. Это так . И SalesOrderDetail.SalesOrderID является внешним ключом для SalesOrderHeader.SalesOrderID. Это так . Тогда ваш первый запрос - ок.