2011-05-11 6 views
0

성적 분포를 보여주는 ASP.NET 차트 컨트롤을 보여 드리고 싶습니다.성적 분포를위한 ASP.NET 차트

그것은 F.

에 이르기까지 어떤 성적을 가지고 얼마나 많은 학생들에게 보여 주어야 어떻게 차트에는 학생들이 도착하지 않는 경우에 등급 A, B, C, D, F를 포함하게 수행 D 글자라고하니? 예를 들어 D 값을 X 축에 표시하지만 학생 수가 0 인 경우를 원합니다.

데이터가 데이터베이스에서 가져와지고 있으며 ObjectDataSource를 사용하여 차트 컨트롤에 바인딩합니다.

편집 : 데이터 구조는 학생 테이블이 있고 각 스텐드에는 성, 성 및 학년이 있습니다.

EDIT : 나머지 사이트에서는 LINQ와 함께 Entity Framework를 사용하고 있습니다 (원시 SQL 작성과 반대). 따라서 완벽한 세계에서 솔루션은 원시 SQL을 포함하지 않았습니다.

+0

내가 원시 SQL을 사용하지 귀하의 편집에 따라 응답 아래 편집 다음과 같이

이 데이터 테이블을 생성합니다 –

답변

0

쿼리를 변경하여 모든 성적을 포함 할 수 있습니까? 그렇다면 각 성적에 대한 세부 정보를 기입하십시오. - 총 해킹 내가 스키마

 
select * from 
(
select 'a' Grade 
union 
select 'b' Grade 
union 
select 'c' Grade 
union 
select 'd' Grade 
union 
select 'f' Grade 
) as grades g 
outer join yourothertable t on g.Grade = t.Grade

편집을 모르는 당신에게 아이디어를 보여줄 뿐이다 :이은 SQL 솔루션 싶지 않아 실현하여 편집을 읽은 후, 다음 선택은 걸릴 것입니다 귀하의 개체 및 linq 그들에 학년을 포함하는 개체에 가입 할 수 있습니다.

은 다음을 참조하십시오 http://www.hookedonlinq.com/OuterJoinSample.ashx 공용 클래스 급 { 공공 문자열과 같은 사용 뭔가 LetterGrade; } 목록을 채우고 쿼리의 결과에 외부 조인을 수행하십시오. 귀하의 새로운 linq 결과 컬렉션은 이제 당신이 databind입니다.

0

데이터가 어떻게 구성되어 있는지 알지 못하면 상세한 답변을하기가 약간 어렵습니다. 여기에 SQL Common Table Expressions (CTE)를 사용하여 수행하는 방법이 있습니다. 차트 컨트롤에 쉽게 바인딩 할 수 있도록 데이터를 구성합니다.

| Grade | TotalGrades | 
|-------|-------------| 
| A |  2  | 
| B |  1  | 
| C |  2  | 
| D |  0  | 
| E |  0  | 
| F |  1  | 

을 그리고 여기에 코드입니다 :

;With Grades (Grade) as 
(
    SELECT 'A' Grade 
    UNION 
    SELECT 'B' Grade 
    UNION 
    SELECT 'C' Grade 
    UNION 
    SELECT 'D' Grade 
    UNION 
    SELECT 'E' Grade 
    UNION 
    SELECT 'F' Grade 
), 
GradeResults (Name,Grade) as 
(
    SELECT 'John','A' 
    UNION 
    SELECT 'Sally','B' 
    UNION 
    SELECT 'Dave','C' 
    UNION 
    SELECT 'Charlie','C' 
    UNION 
    SELECT 'Lisa','F' 
    UNION 
    SELECT 'Russ','A' 
) 
SELECT a.Grade, COUNT(b.Grade) as TotalGrades FROM Grades a LEFT OUTER JOIN GradeResults b on a.Grade = b.Grade 
GROUP BY a.Grade 
ORDER BY a.Grade; 
관련 문제