首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自OpenSQL中另一个表的计算字段

来自OpenSQL中另一个表的计算字段
EN

Stack Overflow用户
提问于 2019-07-30 20:12:41
回答 1查看 77关注 0票数 1

下面的示例在MySql中工作,我如何在OpenSql中实现它?

代码语言:javascript
复制
 SELECT StudentID, Name,
     ( SELECT COUNT(*) FROM StudentExam
      WHERE StudentExam.StudentID = Student.StudentID )
      AS ExamsTaken
   FROM Student
   ORDER BY ExamsTaken DESC;

SAP_BASIS版本: 740-13

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-30 21:00:09

为什么不直接使用INNER JOINGROUP BY呢?如果您还想显示没有参加考试的学生,那么您可以使用UNION来实现。

代码语言:javascript
复制
SELECT StudentID, Name, COUNT(*) AS ExamsTaken
  FROM Student INNER JOIN StudentExam
  ON Student.StudentID = StudentExam.StudentID
  GROUP BY StudentID, Name
UNION
SELECT StudentID, Name, 0 AS ExamsTaken
  FROM Student
  WHERE StudentID NOT IN (SELECT StudentID FROM StudentExam WHERE StudentID =
    Student.StudentID)
  ORDER BY ExamsTaken DESC.

下面是OpenSQL中的一些真实示例。

代码语言:javascript
复制
REPORT zzz.

START-OF-SELECTION.
  SELECT scarr~carrid, scarr~carrname, COUNT(*) AS examstaken
    FROM scarr INNER JOIN sflight
    ON scarr~carrid = sflight~carrid
    GROUP BY scarr~carrid, scarr~carrname
  UNION
  SELECT scarr~carrid, scarr~carrname, 0 AS examstaken
    FROM scarr
    WHERE carrid NOT IN ( SELECT carrid FROM sflight WHERE carrid = scarr~carrid )
  ORDER BY examstaken DESCENDING " <== applies to the union of both SELECT
  INTO TABLE @DATA(g_tab_result).
BREAK-POINT.

结果如下所示。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57271404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档