2013-01-11 67 views
0

剛剛得到另一個查詢,我正在將剩餘的頭髮留在這裏。SQL Server表值函數問題

我有4個表(ProductCustomersOrdersOrder Details)我需要創建通過國家名稱的功能重要表函數。我還需要該功能將我的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); 

我沒有在我的Orders表有一個Country列,所以也許這就是爲什麼它不工作。不知道如何加入這兩個。 OrdersCustomers分享CustomerID作爲一個關係,但嘗試,也給了我一個錯誤。

任何想法?我必須現在去睡覺,但我會在早上第一件事情。

感謝

回答

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); 

還是那麼您可能不需要它了 - 看到你對CustomersCountry列:

CREATE FUNCTION Orders_By_Country (@Country VARCHAR(50)) 
    RETURNS TABLE 
    AS RETURN 
     (SELECT Customers.Country, Customers.CompanyName 
     FROM Customers 
     WHERE 
      Customers.Country = @Country); 
+0

非常感謝你馬克。正是我在找的! – user1968657