0

我有 3 个结果集为-

@userIDs -

 UserID
   1
   2

@crsIDs -

 CurriculumID
    1
    2

@结果

UserID  CurriculumID FailOrPass
  1          1       1
  2          1       0
  1          2       0
  2          2       0

有 2 个用户和 2 个课程,1 表示通过,0 表示失败(FailOrPass),现在我想知道有多少用户通过,有多少失败。要通过用户必须通过每个课程,否则他将失败。在上面的示例中,输出可以是 -

UserID    FailOrPass
  1           0
  2           0

因为没有一个用户通过所有课程。

我很难通过@crsIDs 对@result 表进行分组,为了进一步计算整体FailOrPass,我的想法是按@result 表对@crsIDs 和@userIDs 进行分组,并获得FailOrPass 的最小值。

4

2 回答 2

0

您可以转到@result 表并使用:

 select userId, min(FailOrPass) as FailOrPass
 from @result
 group by userId

如果任何值为 0,该min()函数将返回 0。

于 2013-02-06T03:46:39.160 回答
0
SELECT UserID, FailOrPass = MIN(FailOrPass)
FROM @Result
GROUP BY UserID

应该返回预期的输出。

于 2013-02-06T03:47:13.357 回答