が、私は4つのテーブルを持っている、SQL Serverのパラメータよりも多くして機能を実行します。作成し
1-dbo.Projects(ID、プロジェクト名、地域、PaymentSystem、location.id、purpose.id、types.idなど)
2- dbo.Locations(ID、ロケーション名)
3- dbo.Purpose(ID、Purposename)
4- dbo.Types(ID、typname)私は
検索基準、この基準iデータベーステーブルのデータで満たされています。場所、目的、タイプには最大値と最小値のテキストボックスもあります。
私はすべてのフィールドと最大、最小値を検索します - 私はこのクエリに達したが、最大と最小を取得したり、フィルタするクエリを逃した:あなたはarea
列のフィルタをしたい私の理解から
ALTER FUNCTION SearchProjects (
@location NVARCHAR(50),
@purpose NVARCHAR(50),
@type NVARCHAR(50),
@max nvarchar(50),
@min nvarchar(50))
RETURNS TABLE
AS
RETURN
(
SELECT p.ProjectName,
p.Areas,
p.PaymentSystem,
p.ReceivedDate,
p.PropertyClassification,
p.ProjectImage,
l.LocationName,
Pur.PurposeName,
t.TypeName
FROM dbo.Projects AS p
LEFT JOIN dbo.Locations AS l ON p.LocationID = l.ID
LEFT JOIN dbo.Purpose pur ON p.PurposeID = pur.ID
LEFT JOIN dbo.[Types] AS t ON p.TypeID = t.ID
WHERE UPPER(ISNULL(l.LocationName,N'')) LIKE N'%' + UPPER(@location) + '%'
AND UPPER(ISNULL(pur.PurposeName,N'')) LIKE N'%' + UPPER(@purpose) + '%'
AND UPPER(ISNULL(t.TypeName,N'')) LIKE N'%' + UPPER(@type) + '%'
AND p.Areas like @max
AND p.Areas like @min
)
GO
SELECT * FROM dbo.SearchProjects('','','','200','250');
あなたは何を求めていますか?具体的にしてください。 –
私は最大値と最小値を関数に渡してから、値を持つ領域の列を返します。各レコードの領域の列の値が100から300の場合は、最小値100と最大値200を渡して、すべての結果が一致するようにします。この値を使用して – hashim
[SQL Serverで関数を作成して実行する]の可能な複製(http://stackoverflow.com/questions/40719540/create-and-execute-function-in-sql-server) –