0

ここに残っている髪の毛を引っ張っているという別の質問がありました。

4つのテーブル(、、、ProductCustomersOrdersありOrder 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);

Countryテーブルに列がないOrdersので、おそらくそれが機能しない理由です。これら2つを結合する方法がわかりません。Orders関係としてCustomers共有CustomerIDしますが、それを試してみるとエラーも発生しました。

何か案は?今寝なきゃいけないのですが、朝一番にチェックします。

ありがとう

4

1 に答える 1

1

テーブルを使用Ordersして決定を下したい場合、またはTVFのそのテーブルから1つまたは複数の列を返したい場合は、テーブルに参加する必要があります。

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 に答える