我正在使用 AdventureWorks2012 数据库和 Microsoft SQL Server 2012。我正在尝试返回 SalesOrderID、订单日期的年份和月份、到期总额、区域组、区域名称、州发货订单以及销售代表的名字和姓氏分配给订单。我使用了一堆连接,这就是我在下面的代码中所拥有的。
SELECT OH.SalesOrderID AS SalesOrderID,
YEAR(OH.OrderDate) AS [Year],
MONTH(OH.OrderDate) AS [Month], OH.TotalDue AS TotalDue,
ST.[Group] AS [Group],
ST.Name AS TerritoryName, SP.Name AS ShipState,
(SalesP.FirstName + ' ' + SalesP.LastName) AS SalesRepName
FROM Sales.SalesOrderHeader OH
INNER JOIN Sales.SalesTerritory ST
ON OH.TerritoryID = ST.TerritoryID
INNER JOIN Sales.vSalesPerson SalesP
ON OH.SalesPersonID = SalesP.BusinessEntityID
INNER JOIN [Person].[StateProvince] SP
ON ST.TerritoryID = SP.TerritoryID
INNER JOIN [Person].[Address] A
ON OH.ShipToAddressID = A.AddressID
GROUP BY OH.SalesOrderID, OH.OrderDate,
OH.TotalDue, ST.[Group], ST.Name,
SP.Name, SalesP.FirstName, SalesP.LastName
当我执行以下代码时,我得到了一堆 SalesOrderID 记录,它似乎将每个可能的 Ship State 命名为记录。基本上我会得到更多的记录,然后我应该。我不完全确定我在代码中做错了什么,我觉得我的连接是正确的,但我没有得到准确的数据。我正在寻找每个 SalesOrderID 以返回 1 个结果,而不是很多。任何帮助,将不胜感激。