Click here to Skip to main content
15,888,351 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have three tables dbo.Student col(StudentID,Student Name and

Subjects                Test
---------------         ----------------
subjectId int           StubjectId int foreignkey reference Subjects
Subject Name            StudentID int  foreignkey reference  Student
                        Marks int
Now I need to display the test Result As

Student Name     Math   Geo 
----------------------------
Michael          90     67


What I have tried:

SELECT *
FROM 
(
	SELECT 
	[FRMSIXWKTST.SubjectId],Marks
	FROM FRMSIXWKTST,Subjects		
)as s
PIVOT
(
	AVG(Marks)
	FOR [Subject Name] IN (SubjectId)
)as Pivot_alias
Posted
Updated 27-Sep-17 10:11am
v2
Comments
pt1401 27-Sep-17 13:17pm    
I think you need to rewrite your question :-)

1 solution

Here is something similar that you can study and relate it to your assignment.
SQL PIVOT Rows to Columns with JOIN Tables[^]
SQL
BEGIN --CREATE TEMP TABLE
	DECLARE @Sport TABLE (
		SportId		INT,
		SportName		VARCHAR(50)
	)

	DECLARE @Game TABLE (
        SportId		INT,
		AthleteId		INT,
		Scores			INT
	)

	DECLARE @Athlete TABLE (
		AthleteId		INT,
		AthleteName		VARCHAR(50)
	)
END

BEGIN --INSER INTO @Athlete TABLE
	INSERT INTO @Athlete
		SELECT 1, 'Michael'
		UNION
		SELECT 2, 'Richard';
END

BEGIN --INSER INTO @Sport TABLE
	INSERT INTO @Sport
		SELECT 1, 'Ping Pong'
		UNION
		SELECT 2, 'Basketball'
		UNION
		SELECT 3, 'Football';
END

BEGIN --INSER INTO @Game TABLE
	INSERT INTO @Game
		SELECT 1, 1, 90
		UNION
		SELECT 2, 1, 67
		UNION
		SELECT 3, 1, 78
		UNION
		SELECT 1, 2, 77
		UNION
		SELECT 2, 2, 87
		UNION
		SELECT 3, 2, 54;
END

SELECT AthleteName, [Ping Pong], Basketball
FROM 
(
	SELECT 
	 AthleteName, SportName, Scores  
	 FROM @Game t JOIN  @Athlete s
			ON t.AthleteId = s.AthleteId
		JOIN @Sport sub 
			ON t.SportId = sub.SportId
	WHERE t.AthleteId = 1
)as s
PIVOT
(
	AVG(Scores)
	FOR SportName IN ([Ping Pong], Basketball, Football)
)as Pivot_alias

Output:
AthleteName  Ping Pong Basketball
Michael      90        67
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900