Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 一列中字符值的总和_Sql_Sql Server_Oracle - Fatal编程技术网

Sql 一列中字符值的总和

Sql 一列中字符值的总和,sql,sql-server,oracle,Sql,Sql Server,Oracle,我需要在一列中计算不同的值。它是Char数据类型。我在oracle中编写了代码,但无法更改SQL server中的语法 这项工作: Select l.name, l.address, SUM(DECODE(L.SEX, 'M', 1, 0)) MALE_TOTAL, SUM(DECODE(L.SEX, 'F', 1, 0)) FEMALE_TOTAL, SUM(DECODE(L.SEX, 'U', 1, 0)) UNK

我需要在一列中计算不同的值。它是Char数据类型。我在oracle中编写了代码,但无法更改SQL server中的语法

这项工作:

Select l.name, l.address,
       SUM(DECODE(L.SEX,   'M',   1,   0)) MALE_TOTAL,
       SUM(DECODE(L.SEX,   'F',   1,   0)) FEMALE_TOTAL,
       SUM(DECODE(L.SEX,   'U',   1,   0)) UNKNOWN_TOTAL
From personnel
非常感谢

您可以使用IIF 2012+

或案例

SELECT
  SUM(case when L.SEX = 'M' then 1 else 0 end)) MALE_TOTAL,
  SUM(case when L.SEX = 'F' then 1 else 0 end) FEMALE_TOTAL,
  SUM(case when L.SEX = 'U' then 1 else 0 end) UNKNOWN_TOTAL
FROM personnel

您想要的SQL标准方法是:

Select l.name, l.address,
       SUM(CASE WHEN L.SEX = 'M' THEN 1 ELSE 0 END) MALE_TOTAL,
       SUM(CASE WHEN L.SEX = 'F' THEN 1 ELSE 0 END) FEMALE_TOTAL,
       SUM(CASE WHEN L.SEX = 'U' THEN 1 ELSE 0 END) UNKNOWN_TOTAL
From personnel
group by l.name, l.address;
注意
分组依据
。如果您想要每个名称/地址一行,那么您需要这个。否则,从
选择中删除列:

Select SUM(CASE WHEN L.SEX = 'M' THEN 1 ELSE 0 END) MALE_TOTAL,
       SUM(CASE WHEN L.SEX = 'F' THEN 1 ELSE 0 END) FEMALE_TOTAL,
       SUM(CASE WHEN L.SEX = 'U' THEN 1 ELSE 0 END) UNKNOWN_TOTAL
From personnel;

这是mysql还是sql server?您使用的是什么数据库?它看起来既不是SQL Server,也不是MySQL。他选择的是SQL Server。我使用的是SQL Server 12.0。我尝试了IFF-它说不是一个可识别的函数。我尝试了案例解决方案,它说列无效,它既不包含在聚合函数中,也不包含在GROUPBY子句中。谢谢!谢谢!谢谢!谢谢!谢谢!谢谢!
Select SUM(CASE WHEN L.SEX = 'M' THEN 1 ELSE 0 END) MALE_TOTAL,
       SUM(CASE WHEN L.SEX = 'F' THEN 1 ELSE 0 END) FEMALE_TOTAL,
       SUM(CASE WHEN L.SEX = 'U' THEN 1 ELSE 0 END) UNKNOWN_TOTAL
From personnel;