شکل ساده کد آن به صورت زیر می باشد:
SELECT Id, col1, col2, col3, col4
FROM myTable
WHERE (condition1 OR @Param1 IS NULL)
AND (condition2 OR @Param2 IS NULL)
AND (condition3 OR @Param3 IS NULL)
...
AND (conditionN OR @ParamN IS NULL
یه نمونه عملی از اجرای این کد به صورت زیر می باشد:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
CREATE PROCEDURE [dbo].[OMmaghaleViewPrsd]
@rownum int = null ,
@maghaletypeID int = null,
@countstep int = 5
AS
BEGIN
select * from OMmaghaleView
where
(RowCunter between @rownum and @rownum + @countstep or @rownum IS NULL or @rownum=-1) and
(OMmaghaleTypeID= @maghaletypeID or @maghaletypeID =-1 or @maghaletypeID IS NULL )
END
ساخت Pivot Table از طریق SQL Server
نمونه کد به کار رفته برای ساخت به صورت زیر می باشد:
CREATE TABLE yt
(
[Store] int,
[Week] int,
[xCount] int
);
INSERT INTO yt
(
[Store],
[Week], [xCount]
)
VALUES
(102, 1, 96),
(101, 1, 138),
(105, 1, 37),
(109, 1, 59),
(101, 2, 282),
(102, 2, 212),
(105, 2, 78),
(109, 2, 97),
(105, 3, 60),
(102, 3, 123),
(101, 3, 220),
(109, 3, 87);
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(Week)
from yt
group by Week
order by Week
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')
set @query = 'SELECT store,' + @cols + ' from
(
select store, week, xCount
from yt
) x
pivot
(
sum(xCount)
for week in (' + @cols + ')
) p '
execute(@query);
دستور STUFF برای حذف اولین کاما به کار می رود
دستور QUOTENAME برای اضافه کردن براکت به کار می رود.
دستور FOR XML PATH برای تبدیل به یک رشته به کار می رود
دستور کامل به صورت زیر می باشد
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(Hcol)
from TableName
group by Hcol
order by Hcol
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')
set @query = 'SELECT Vcol,' + @cols + ' from
(
select Vcol, Hcol, SummeyCol
from TableName
) x
pivot
(
sum(SummeyCol)
for Hcol in (' + @cols + ')
) p '
execute(@query);
TableName : اسم جدول
Hcol : سطح افقی یا ستونها
Vcol : سطح عمودی یا سطرها
SummeyCol : ستون محاسباتی