2017-01-24 4 views
0

私は、次のクエリがありますSQL/LINQの列にいくつかの行を変換

SELECT 
    std. [Name] 
    ,cl.Name as clsName 
    ,stu.Name as student 
    ,sub.Name as subject 
    ,r.ObtainedMarks 
    FROM [School.Model.SchoolContext].[dbo].[Standards] std 
    join [School.Model.SchoolContext].[dbo].ClassSections cl on std.Id = cl.StandardId 
    join [School.Model.SchoolContext].[dbo].Students stu on cl.id = stu.ClassSectionId 
    join [School.Model.SchoolContext].[dbo].Subjects sub on std.id = sub.StandardId 
    join [School.Model.SchoolContext].[dbo].Results r on stu.Id = r.StudentId) 

次のような結果を示しています。

Table

私は、例えば被験者のための2つの列を追加したいと思います英語と数学を削除し、列のオブジェクトマークを削除します。得られたマークは、被験者の下に表示する必要があります。

C#でSQLクエリまたはLINQをどのように達成できるか教えてください。

SQLでピボットクエリを実行しましたが、それほど多くはありませんでした。

答えて

1

は次のように試してみてください、私はそれをテストが、ここから継続していなかったとして、それはおそらく動作しません、PIVOTはあなたが

SELECT * FROM (
     SELECT 
      std. [Name] 
      ,cl.Name as clsName 
      ,stu.Name as student 
      ,sub.Name as subject 
      ,r.ObtainedMarks 
     FROM [School.Model.SchoolContext].[dbo].[Standards] std 
     join [School.Model.SchoolContext].[dbo].ClassSections cl on std.Id = cl.StandardId 
     join [School.Model.SchoolContext].[dbo].Students stu on cl.id = stu.ClassSectionId 
     join [School.Model.SchoolContext].[dbo].Subjects sub on std.id = sub.StandardId 
     join [School.Model.SchoolContext].[dbo].Results r on stu.Id = r.StudentId) 
    ) SRC 
    PIVOT 
    (
     MAX(ObtainedMarks) FOR [Subject] IN ([English], [Maths]) 
    ) piv 
+0

エクセレントを願うものです。できます。どのようにハードコードされた "英語"、 "数学"を削除できますか?それは別のテーブルから来て、私たちは被験者を予測できないからです。 –

+0

second:LINQでPivotを使用するにはどうすればよいですか? –

+1

その場合、動的SQLを使用する必要があります。http://stackoverflow.com/questions/37318757/how-to-pivot-rows-into-colums-dynamically-sql-server/37319374#37319374 ... LINQのPIVOTについて私はそれについては分かりません – Veljko89

関連する問題