如何动态创建多个select语句并将其存储在数据表中

时间:2013-12-19 05:48:37

标签: c# sql datagridview datatable

这里的情况是我想要存储到数据表的列数取决于可用数据的数量。我需要一个多选语句来收集所有数据。

select test_result.stud_id,test_info.max_score,
test_result.test_score 
from test_result left join test_info 
  on test_result.test_info_id = test_info.test_info_id 
where test_info.test_type_id = 1 and test_info.test_num = 1;

我必须一遍又一遍地重复此代码,直到test_num达到当前最大计数。我想在将代码存储到datatable时循环这段代码。这就是我希望datagridview显示的内容。

|Quiz Number  | Quiz#1 | Quiz #2 | Quiz #3 |  Quiz #4 |  Quiz #5 |
|Max score    |    20  |    25   |    30   |    15    |    15    |
|student 1    |    18  |    22   |    25   |    12    |    14    |
|student 2    |    19  |    20   |    25   |    11    |    13    |
|student 3    |    20  |    24   |    20   |    12    |    11    |

数据的显示将按行显示。所以每行都需要一个不同的select语句才能显示所需的数据。

1 个答案:

答案 0 :(得分:1)

下面的内容对您有用

select 
test_result.stud_id,
max(case when test_result.test_info_id =1 then test_result.test_score end) as quiz_1,
max(case when test_result.test_info_id =2 then test_result.test_score end) as quiz_2,
max(case when test_result.test_info_id =3 then test_result.test_score end) as quiz_3,
.
.
. 
from test_result left join test_info 
  on test_result.test_info_id = test_info.test_info_id 
where test_info.test_type_id = 1 and test_info.test_num = 1
group by test_result.stud_id;