データの履歴管理をしたくてSQL SERVERで以下のようなビューを作成しようとしたのですが  
サブクエリ内のカラムに対して外部から条件を設定する方がわかりません  
条件式はサブクエリ内で与えないと正しい検索結果が出ないのでこの様にしたいです

ストアドにすると変数を設定できるのですが、この結果をさらに他の検索でJOINして使いたいので出来ればビューで作りたいのですが無理なのでしょうか

```

    SELECT  COL1, COL2, DATE_FROM
    FROM     MST_FOO INNER JOIN
       (SELECT    MAX(DATE_FROM) AS DATE_FROM
             FROM MST_FOO
             WHERE DATE_FROM <= '2020/1/1' -- ★ビューだと指定出来ない？
    ) AS DATE_MAX ON 
           MST_FOO.DATE_FROM = DATE_MAX.DATE_FROM
    
```
CC BY-SA 4.0
2021-08-21T06:12:34.863
80949
2021-08-21T23:27:02.840
2021-08-21T06:13:35.170
3060
15047
question
sql sql-server
SQL SERVERでビュー中のサブクエリに外部から検索条件を設定したい
ビューに条件を指定することはできません。

* * *

> ストアドにすると変数を設定できるのですが、この結果をさらに他の検索でJOINして使いたい

この用途でしたら、[ユーザー定義関数](https://docs.microsoft.com/ja-jp/sql/relational-
databases/user-defined-functions/user-defined-functions?view=sql-server-
ver15)のうちのテーブル値関数としてはどうでしょうか。[こちらのサンプル](https://docs.microsoft.com/ja-
jp/sql/relational-databases/user-defined-functions/create-user-defined-
functions-database-engine?view=sql-server-ver15#TVF)に

```

    SELECT * FROM Sales.ufn_SalesByStore (602);
    
```

とあるように、テーブル値関数は`FROM`句に書けて、結果をテーブルとして扱えるので`JOIN`等も可能です。
CC BY-SA 4.0
2021-08-21T23:27:02.840
80959
2021-08-21T23:27:02.840
4236
80949
answer