2つのテーブルを選択して結合するプロシージャをSQLServerで作成したいと思います。パラメータ@company、@ from、および@toは常に設定されますが、@serie_typeはNULLにすることができます。@serie_typeがNULLでない場合は、指定されたタイプ(simple)を含めたいだけですAND S.Type = @serie_typeが、@ serie_typeがNULLの場合は、すべてのタイプ(simple)を含めたいので、ANDステートメントを含めないでください。私の問題は、@ serie_typeが設定されるかどうかわからないため、次のようなものが欲しいということです。
/* pseudocode */
??? = AND (IF @serie_type IS NOT NULL S.Type = @serie_type)
手順の簡略化されたバージョンは次のとおりです。
CREATE PROCEDURE Report_CompanySerie
@company INT,
@serie_type INT,
@from DATE,
@to DATE
AS
BEGIN
SELECT
*
FROM Company C
JOIN Series S ON S.Company_FK = C.Id
WHERE C.Id = @company
AND S.Created >= @from
AND S.Created <= @to
/* HERE IS MY PROBLEM */
AND ???
END
GO
実際の選択はこれよりもはるかに大きいため、選択を複製したくない。