استفاده از pivot در SQL Server
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE Grades
(
[Student] NVARCHAR(50),
[Subject] NVARCHAR(50),
[Marks] INT
)
GO
INSERT INTO Grades
VALUES ('ali', 'Mathematics', 20),
('ali', 'Science', 16),
('ali', 'Geography', 18),
('mohammad', 'Mathematics', 10),
('mohammad', 'Science', 18),
('mohammad', 'Geography', 17)
GO
1
2
3
ALTER TABLE Grades
ADD
DateOfEvent datetime2 NULL
1
2
INSERT INTO Grades (Student, Subject, Marks, DateOfEvent)
VALUES ('ali', 'Mathematics', 14, GETDATE())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE PROCEDURE dbo.DynamicPivotTableInSql @ColumnToPivot NVARCHAR(255),
@ListToPivot NVARCHAR(255)
AS
BEGIN
SELECT *
FROM (SELECT [Student],
[Subject],
[Marks]
FROM Grades
) StudentResults
PIVOT (
AVG([Marks])
FOR @ColumnToPivot
IN (@ListToPivot)
) AS PivotTable
END