当前位置: 首页 > 面试题库 >

SQL-WITH'AS的替代

谭高峯
2023-03-14
问题内容

示例是否有 有效的 替代SQL?我不想使用WITH … AS,这是主要标准

WITH TEMP_TABLE AS (
     SELECT status, COUNT(1) as total FROM XYZ GROUP BY status
    )
SELECT 
         NVL((SELECT TOTAL  FROM TEMP_TABLE WHERE STATUS = 'A'),0) AS A_COUNT ,
         NVL((SELECT TOTAL  FROM TEMP_TABLE WHERE STATUS = 'B'),0) AS B_COUNT ,
         NVL((SELECT TOTAL  FROM TEMP_TABLE WHERE STATUS = 'C'),0) AS C_COUNT ,
         NVL((SELECT TOTAL  FROM TEMP_TABLE WHERE STATUS = 'D'),0) AS D_COUNT , 
         NVL((SELECT TOTAL  FROM TEMP_TABLE WHERE STATUS = 'E'),0) AS E_COUNT ,
         NVL((SELECT TOTAL  FROM TEMP_TABLE WHERE STATUS = 'F'),0) AS F_COUNT  
FROM DUAL;

我读过类似的问题,但它们使用其他ddl东西,我只想要一个基本的SQL语句。


问题答案:

只需使用条件聚合:

SELECT SUM(CASE WHEN STATUS = 'A' THEN 1 ELSE 0 END) AS A_COUNT ,
       SUM(CASE WHEN STATUS = 'B' THEN 1 ELSE 0 END) AS B_COUNT ,
       SUM(CASE WHEN STATUS = 'C' THEN 1 ELSE 0 END) AS C_COUNT ,
       SUM(CASE WHEN STATUS = 'D' THEN 1 ELSE 0 END) AS D_COUNT ,
       SUM(CASE WHEN STATUS = 'E' THEN 1 ELSE 0 END) AS E_COUNT ,
       SUM(CASE WHEN STATUS = 'F' THEN 1 ELSE 0 END) AS F_COUNT 
FROM XYZ ;

我应该指出,将值放在单独的行上甚至更加容易:

select status, count(*)
from xyz
group by status;


 类似资料:
  • 问题内容: 我有一张要从中获取前N条记录的表。记录按值排序,某些记录具有相同的值。我想在这里做的是获取前N条记录的列表,包括并列记录。这是表中的内容: 现在,如果我想获得像这样的前三名 我得到这个: 我想得到的是这个 我计算每条记录的排名,因此我真正想要的是获得前N个排名记录,而不是按值排序的前N个记录。这是我如何计算排名: 在T-SQL中,通过执行以下操作可以实现以下目的: 有谁知道如何在MyS

  • 示例:/Hello/baby/Deneme//Hello2/ 输出:(/hello/)baby(/deneme/)(/hello2/)

  • 问题内容: 诚然,对于SQL命令,我是一个菜鸟。黑客在我的一个WordPress网站上的每个帖子和页面的末尾插入了一个脚本标签,我试图在“ wp_posts”表中进行查找和替换,但是当我运行“模拟查询。这是我所拥有的: 无论我在第一组“查找”引号中添加了什么内容,即使是像“ hcifx”一样简单的东西,而不是所显示的整个脚本标签,我都会收到错误消息。有什么想法我要去哪里吗? 问题答案: 原来,该错

  • 问题内容: 我需要合作,需要一些帮助。 我有两个表TbProjectTeam和TbProjectList。我需要比较员工离职日期和项目开始日期。我使用了这种语法: 我的目标是在TbSeznamUkolu替换1。[ID] = 1所表达的东西作为在。不支持此功能,但不幸的是,我需要了解所有项目的行索引。我想这将显示匹配每一行的员工。 谁能帮我吗?十分感谢。 问题答案: MS Access具有 自动编号

  • 问题内容: 我有需要变量替换以更好地使用Go-kit服务的sql查询。 我有&作为用户输入的内容,这是我的休息服务的一部分,例如:和。 我已经尝试了一些事情,例如: 和: 导致错误: 仅硬编码的值有效,替换失败。 我没有从Oracle博客那里找到很多有关此方面的帮助,并且想知道是否有任何方法可以解决此问题。 问题答案: 参数占位符语法(参考:http : //go-database- sql.or

  • 问题内容: 我正在将MSSQL脚本转换为Oracle,但无法弄清楚使用变量代替表名或列的语法。 这是我尝试在Oracle SQL Developer中工作的一个简单示例,因此我可以更好地理解语法: 其中VR_TABLE是变量表名称,该变量表名称将在循环的每次迭代中更改。有人可以指出我做错了什么,还是可以将我链接到一个对我来说有用的网站?我已经阅读了一些有关此的教程,但是到目前为止,我还没有碰到任何