我想查询一个选择一列中所有重复值的查询。如果这些值满足条件,那么我希望查询仅返回那些值。
Class Student_ID Location
Biology 511 4A
Biology 512 15B
Biology 513 15B
English 514 6A
Biology 521 6A
Spanish 522 6A
Spanish 523 15B
Chemistry 524 4A
English 531 15B
Biology 532 4A
Chemistry 534 4A
在“类”列中选择所有重复的值,如果在这些值中同时在4A和15B中都有位置,则分配1。
CASE WHEN count(class) > 1 AND (Location = '4A' AND Location = '15B') THEN 1
ELSE 0 END
最重要的是如何选择重复的值作为组,然后查看条件(位置必须为4A和15B)。因此,查询必须首先将来自类列的重复值进行分组,然后查看该组中的值是否满足位置条件。因此,例如,我们首先将类别列分组,得到5倍的生物学值,然后将其视为一组,然后在该组中,如果存在位置4A的一行和位置15B的一行,然后才为生物学分配值1。类别列中的几乎所有值都重复。
所需的输出
Class Location
Biology 1
Chemistry 0
English 0
Spanish 0
答案 0 :(得分:0)
作为蒂姆·施密特的答案的替代方法,您也可以使用LEFT JOIN
来完成此操作。
SELECT yt1.Class, IIF(COUNT(yt2.Class) > 0, 1, 0) AS IsMatch
FROM YourTable yt1
LEFT JOIN YourTable yt2 ON yt1.Location = '4A' AND yt2.Location = '15B' AND
yt2.Class = yt1.Class
GROUP BY yt1.Class