【问题标题】:SQL : Count with "==" to check in SQL Server [duplicate]SQL:使用“==”计数以签入 SQL Server [重复]
【发布时间】:2022-02-15 23:22:56
【问题描述】:

我正在使用 SQL Server,我想创建一个包含这些列的视图 (my_View):

[element_1]
[element_2]
[element_3]
[element_4]

它们都指向另一个表 (AT) 中名为 [parent_1] 的同一列

[parent_1] 可以有 4 个可能的值 [value_1]、[value_2]、[value_3] 和 [value_4]。

我想要的是,使用COUNT

  • [element_1]等于[parent_1]等于[value_1]的次数
  • [element_2]、[element_3] 和 [element_4] 相同,等于 [value_2]、[value_3] 和 [value_4]。

是否可以在 COUNT 中使用“==”来查看它是否检查条件?

类似这样的:

COUNT (AT.parent_1 == "value_1") AS element_1
COUNT (AT.parent_1 == "value_2") AS element_2
COUNT (AT.parent_1 == "value_3") AS element_3
COUNT (AT.parent_1 == "value_4") AS element_4

谢谢大家

【问题讨论】:

  • 是的,只有一个=符号。
  • 是的,但是==没有在SQL Server中使用,也没有布尔类型,你需要做的是COUNT(CASE WHEN AT.parent_1 = 'value_1' THEN 1 END) AS Element_1,或者更简单的SUM(IIF(AT.parent = 'value_1',1,0)
  • 好的,谢谢各位。

标签: sql sql-server


【解决方案1】:

您可以为此使用 CASE 指令

https://docs.microsoft.com/fr-fr/sql/t-sql/language-elements/case-transact-sql?view=sql-server-ver15

SUM (CASE WHEN AT.parent_1 = 'value_4' THEN 1 ELSE 0 END) as element_4

【讨论】:

  • @GarethD 谢谢你修复:)
  • 感谢您的帮助,我会尝试的。
  • COUNT 没有ELSE 感觉更明显
【解决方案2】:

你可以这样做:

SELECT
       sum(case when parent_1 = "value_1" then 1 else 0 end) as element_1,
       sum(case when parent_1 = "value_2" then 1 else 0 end) as element_2,
       sum(case when parent_1 = "value_3" then 1 else 0 end) as element_3,
       sum(case when parent_1 = "value_4" then 1 else 0 end) as element_4
FROM table;

【讨论】:

  • 我无法关注你。我已经使用过 SUM 并且从未使用过 COUNT。你能指出查询有什么问题吗?
【解决方案3】:
create my_view as 
select 
-- other list of columns,
SUM (CASE WHEN AT.parent_1 = 'value_1' THEN 1 ELSE 0 END) as element_1,
SUM (CASE WHEN AT.parent_1 = 'value_2' THEN 1 ELSE 0 END) as element_2,
SUM (CASE WHEN AT.parent_1 = 'value_3' THEN 1 ELSE 0 END) as element_3,
SUM (CASE WHEN AT.parent_1 = 'value_4' THEN 1 ELSE 0 END) as element_4
from tableName AT

不需要像编程语言那样使用==,在SQL中比较运算符是=

【讨论】:

  • 与另一个答案上的Gareth made 相同。这需要SUM 或在ELSE 中返回NULL(或ELSE 完全省略)。
  • 明白。更新了查询。
猜你喜欢
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多