Sql 如何使用公共表表达式进行筛选
有人愿意为我指出正确的方向吗?我正在使用AdventureWorks2012数据库完成一些培训,我不太确定如何解决一个问题,即我需要找到所有未使用海外-豪华或隔夜J-FAST ShipMethod发货方法的采购订单SalesOrderHeader,我必须使用通用表表达式来完成此操作 以下是我到目前为止得出的结论,这似乎是不正确的:Sql 如何使用公共表表达式进行筛选,sql,sql-server,common-table-expression,Sql,Sql Server,Common Table Expression,有人愿意为我指出正确的方向吗?我正在使用AdventureWorks2012数据库完成一些培训,我不太确定如何解决一个问题,即我需要找到所有未使用海外-豪华或隔夜J-FAST ShipMethod发货方法的采购订单SalesOrderHeader,我必须使用通用表表达式来完成此操作 以下是我到目前为止得出的结论,这似乎是不正确的: WITH filteredshipmethods (ShipMethodID, Name, PurchaseOrderNumber) as (SE
WITH filteredshipmethods (ShipMethodID, Name, PurchaseOrderNumber)
as
(SELECT Purchasing.PurchaseOrderHeader.ShipMethodID, Purchasing.ShipMethod.Name, Sales.SalesOrderHeader.PurchaseOrderNumber
FROM Purchasing.PurchaseOrderHeader INNER JOIN
Purchasing.ShipMethod ON Purchasing.PurchaseOrderHeader.ShipMethodID = Purchasing.ShipMethod.ShipMethodID INNER JOIN
Sales.SalesOrderHeader ON Purchasing.ShipMethod.ShipMethodID = Sales.SalesOrderHeader.ShipMethodID
WHERE Purchasing.ShipMethod.Name <> 'OVERSEAS - DELUXE' AND Purchasing.ShipMethod.Name <> 'OVERNIGHT J-FAST' And PurchaseOrderNumber is not null)
SELECT PurchaseOrderNumber, ShipMethodID, Name
From filteredshipmethods
Group By ShipMethodID, Name, PurchaseOrderNumber
Order By Name;
如果任务是查找SalesOrderHeader,那么为什么要加入PurchaseOrderHeader?请使用别名,它将帮助您最小化代码并更好地理解您拥有的内容。请尝试:
WITH filteredshipmethods
AS ( SELECT soh.PurchaseOrderNumber ,
sm.ShipMethodID ,
sm.Name
FROM Sales.SalesOrderHeader soh
INNER JOIN Purchasing.ShipMethod sm ON soh.ShipMethodID = sm.ShipMethodID
WHERE sm.Name <> 'OVERSEAS - DELUXE'
AND sm.Name <> 'OVERNIGHT J-FAST'
)
SELECT PurchaseOrderNumber ,
ShipMethodID ,
Name
FROM filteredshipmethods
GROUP BY PurchaseOrderNumber ,
ShipMethodID ,
Name
这个SQL有什么问题?请发布错误或问题此处是输出的屏幕截图。我只收到一个发货方法,这一定意味着我的和/或是不正确的?你真的不需要一个通用的表表达式。。。。这是一个非常直接的向前选择查询……目前的查询只返回ShipMethodID为5的采购订单;总共有5个不同的方法ID。我应该看到所有的采购订单,除了3和4的运输方式的采购订单。有方法1,向下滚动。方法2不在表SalesOrderHeaderOnly中,问题是。如果我在Purchasing.PurchaseOrderHeader上运行查询并筛选出shipmethodID为3&4;我得到了许多PurchaseOrderID和我查询中不存在的所有其他shipMethodID。不要按ShipMethod连接PurchaseOrderHeader和SalesOrderHeader。这是毫无意义的嗯。。。据我所见,我只能从SalesOrderHeader获取PurchaseOrderNumber