SQL求和满足条件的数量并与其他列进行比较

发布于 2025-01-18 09:09:07 字数 358 浏览 4 评论 0原文

我想检查三列是否满足某个条件。接下来,我想对这三个布尔值求和,并检查它们是否与第四列中的值相同。

SELECT SUM(CASE WHEN column1 LIKE 'D%' THEN 1 ELSE 0 END) AS bool1
       SUM(CASE WHEN column2 LIKE 'D%' THEN 1 ELSE 0 END) AS bool2
       SUM(CASE WHEN column3 LIKE 'D%' THEN 1 ELSE 0 END) AS bool3
FROM table
WHERE bool1 + bool2 + bool3 = column4

然而,这会产生错误。我应该如何更改查询?

I want to check for three columns if a certain condition holds. Next, I want to sum these three booleans and check whether they are the same as a value in a fourth column.

SELECT SUM(CASE WHEN column1 LIKE 'D%' THEN 1 ELSE 0 END) AS bool1
       SUM(CASE WHEN column2 LIKE 'D%' THEN 1 ELSE 0 END) AS bool2
       SUM(CASE WHEN column3 LIKE 'D%' THEN 1 ELSE 0 END) AS bool3
FROM table
WHERE bool1 + bool2 + bool3 = column4

This gives an error however. How should I change the query?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

生生漫 2025-01-25 09:09:07

聚合函数 SUM() 对一列的所有值进行运算,因此将其与另一列的特定值进行比较是没有意义的。

我怀疑您想要这样的东西:

SELECT *
FROM tablename
WHERE (column1 LIKE 'D%') + (column2 LIKE 'D%') + (column3 LIKE 'D%') = column4

Each布尔表达式 columnX LIKE 'D%' 的计算结果为 0(对于 false)和 1(对于 true).

如果有列中的 null 更改为:

WHERE COALESCE(column1 LIKE 'D%', 0) + 
      COALESCE(column2 LIKE 'D%', 0) + 
      COALESCE(column3 LIKE 'D%', 0) = column4 

Aggregate function SUM() operates on all values of a column, so it does not make sense to compare it to a specific value of another column.

I suspect that you want something like this:

SELECT *
FROM tablename
WHERE (column1 LIKE 'D%') + (column2 LIKE 'D%') + (column3 LIKE 'D%') = column4

Each of the boolean expressions columnX LIKE 'D%' evaluates to 0 for false and 1 for true.

If there are nulls in the columns change to:

WHERE COALESCE(column1 LIKE 'D%', 0) + 
      COALESCE(column2 LIKE 'D%', 0) + 
      COALESCE(column3 LIKE 'D%', 0) = column4 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文