0

刚刚收到另一个询问,我正在拔掉我在这里留下的剩余头发。

我有 4 个表(、 和ProductCustomers我需要创建一个将 Country Name 传递给函数的值表函数。我还需要将我的桌子与我的桌子连接起来的功能。理想情况下,我想按订单日期过滤国家。所以我希望能够从告诉我在某个日期范围内来自某个国家/地区的订单的功能中进行选择。OrdersOrder DetailsCustomersOrders

到目前为止,我已经尝试了以下但没有太大成功:

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

有任何想法吗?我现在要睡觉了,但我会在早上第一件事回来查看。

谢谢

4

1 回答 1

1

如果您想使用该Orders表进行决策,或者您想从 TVF 中的该表返回一个或多个列,则需要加入它!

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);
于 2013-01-11T06:15:11.330 回答