刚刚得到另一个问题,我正在拉扯我留在这里的剩余头发。
我有4个表(Product
,Customers
,Orders
和Order Details
)我需要创建一个将Country Name传递给函数的值表函数。我还需要函数将Customers
表与我的Orders
表连接起来。理想情况下,我希望按订单日期过滤国家/地区。因此,我希望能够从功能中选择,该功能可以告诉我某个国家/地区在特定日期范围内的订单。
到目前为止,我已经尝试了以下但没有取得多大成功:
USE sample;
GO
CREATE FUNCTION Orders_By_Country (@Country VARCHAR(50))
RETURNS TABLE
AS RETURN (SELECT Customers.Country, Customers.CompanyName
FROM Customers
WHERE Customers.Country = Orders.ShipCountry
AND Country = @Country);
我的Country
表格中没有Orders
列,所以也许这就是为什么它不起作用。不知道如何加入这两个。 Orders
和Customers
分享CustomerID
作为关系,但尝试也给了我一个错误。
有什么想法吗?我现在必须去睡觉了,但是我会在早上第一件事就检查一下。
由于
答案 0 :(得分:1)
如果您想使用Orders
表格做出决定,或者如果您想从TVF中的该表格中返回一列或多列,则需要加入! / p>
CREATE FUNCTION Orders_By_Country (@Country VARCHAR(50))
RETURNS TABLE
AS RETURN
(SELECT Customers.Country, Customers.CompanyName
FROM Customers
INNER JOIN Orders ON Orders.CustomerId = Customers.CustomerId
WHERE
Customers.Country = Orders.ShipCountry
AND Country = @Country);
或者您可能根本不需要它 - 看到Country
表上有Customers
列:
CREATE FUNCTION Orders_By_Country (@Country VARCHAR(50))
RETURNS TABLE
AS RETURN
(SELECT Customers.Country, Customers.CompanyName
FROM Customers
WHERE
Customers.Country = @Country);