让SQL Server选择并显示一条记录



好的,希望我能准确地解释这一点。我在SQL Server工作,我试图从一个表中得到一行,将显示多行同一个人的各种原因。

有一个专栏叫college_attend这将为每个学生展示NewCont

我的问题:我最初的查询缩小了我按学年拉出的行,它由两个学期组成:一年的秋季和次年的春季,以创建一个学年。这就是为什么一些学生返回有两行。

基本上,我需要生成一个"新"的精确计数。和那些"正常"的,但我不希望同一个学生的两份记录都被统计。他们会有两个记录,因为他们会有一个春天和一个秋天(通常)。所以如果一个学生是"新生"在秋天,他们将有一个"康康"。春天的记录。我希望查询只显示"New"如果它们同时具有"New"one_answers"content",则记录为"New"one_answers"content"。记录,并计数(我将在报表生成器中进行)。其他学生基本上会有两份记录,一份是秋季记录,另一份是秋季记录。因此,这些将被认为是连续的或"连续"的。

这是我到目前为止的基本查询:

SELECT DISTINCT
people.people_id,
people.last_name,
people.first_name,
academic.college_attend AS NewORCont,
academic.academic_year,
academic.academic_term,
FROM
academic
INNER JOIN
people ON people.people_id = academic.people_id
INNER JOIN
academiccalendar acc ON acc.academic_year = academic.academic_year
AND acc.academic_term = academic.academic_term
AND acc.true_academic_year = @Academic_year

我不确定这是否可以用CASE语句完成?我想到了GROUP BY,但随后SQL Server将希望我将所有列添加到GROUP BY子句中,这最终否定了分组的目的。

只是我为每个学生做的一个例子:

<表类>人ID在第一个NeworConttbody><<tr>12345Soanso人新12345Soanso人续32345人南希续32345人南希续55555史密斯约翰新55555史密斯约翰续---------,-----------------

如果没有示例数据,很难将问题可视化,如果没有指定预期结果,也不清楚您想要的结果是什么。也许这会有所帮助,它会将结果限制在那些在一个"真正的学年"中同时拥有"New"one_answers"Cont"的人;但计数似乎是多余的,因为这(我想)将始终是2(即1新学期和1旧学期)

SELECT
people.people_id
, people.last_name
, people.first_name
, acc.true_academic_year
, count(*) AS count_of
FROM academic
INNER JOIN people ON people.people_id = academic.people_id
INNER JOIN academiccalendar acc ON acc.academic_year = academic.academic_year
AND acc.academic_term = academic.academic_term
AND acc.true_academic_year = @Academic_year
GROUP BY
people.people_id
, people.last_name
, people.first_name
, acc.true_academic_year
HAVING MAX(academic.college_attend) = 'New'
AND MIN(academic.college_attend) = 'Cont'

相关内容

  • 没有找到相关文章

最新更新