【问题标题】:CASE WHEN LIKE query SQLCASE WHEN LIKE 查询 SQL
【发布时间】:2017-08-15 04:30:24
【问题描述】:

你能告诉我这个查询有什么问题吗?

SELECT Students.Class
FROM Students
GROUP BY Students.class
HAVING SUM(CASE WHEN Name LIKE '*a' THEN 1 ELSE 0 END) > COUNT(*)/2;    

我必须检查名字是否以字母“a”结尾,然后比较每个班级中这些名字的数量是否高于这些班级所有学生的一半。

【问题讨论】:

  • 你遇到什么错误?
  • 对不起,我忘记了。它表示最后一个查询行中存在语法错误(无运算符)。

标签: sql ms-access case sql-like


【解决方案1】:

MS Access 不支持case

SELECT Students.Class
FROM Students
GROUP BY Students.class
HAVING SUM(IIF(Name LIKE '*a', 1, 0)) > COUNT(*)/2; 

【讨论】:

    【解决方案2】:

    我假设你必须只显示类:

    Select Class
    From Students
    Where Name Like '*a'
    Group by Class
    Having SUM(*) > (Select COUNT(*)/2 
                    From Students)
    

    【讨论】:

    • Ms-access 说这个查询有语法错误。
    • 这是逻辑上正确的查询,语法错误很小,我只是看一下就无法捕捉到。我必须在编译器中检查它。你得到什么错误?
    • 它只通知查询“SUM() > SELECT COUNT()/2 FROM Students”中的语法错误。
    • 尝试从学生中选择班级,其中名称为 'a' 按具有 SUM() 的班级分组 > (从学生中选择 COUNT(*)/2)
    • 现在它添加了 SUM() 中没有运算符 > (SELECT COUNT()/2 FROM STUDENTS)。
    猜你喜欢
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2016-02-23
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多