我试图以表格格式提取具有不同兼职和全职值的数据,以获得如下输出:
但我的查询会生成此错误:
语法错误缺少运算符
此查询缺少哪个运算符?
SELECT
BANINST1_SZVIRST.SZVIRST_TERM_DESC,
Count(BANINST1_SZVIRST.SZVIRST_FULL_PART_IND="F") AS ["Full-time Undergraduate Enrollment"],
Count(IIf(BANINST1_SZVIRST.SZVIRST_FULL_PART_IND="P",1,Null)) AS ["Part-time Undergraduate Enrollment"]
FROM BANINST1_SZVIRST
GROUP BY
BANINST1_SZVIRST.SZVIRST_TERM_DESC,
BANINST1_SZVIRST.SZVIRST_TERM_CODE,
BANINST1_SZVIRST.SZVIRST_LEVL_CODE,
BANINST1_SZVIRST.SZVIRST_FULL_PART_IND
HAVING
(((BANINST1_SZVIRST.SZVIRST_TERM_CODE) In ("201020","201120","201220","201320","201420","201520","201620"))
AND ((BANINST1_SZVIRST.SZVIRST_LEVL_CODE)="01"));
答案 0 :(得分:2)
我认为您在测试中有4种不同的情况:
您正在使用iif()
声明。我认为这是你前一天或两年前提出的一个问题。 iif()
语句将是:
SUM(IIF(BANINST1_SZVIRST.SZVIRST_FULL_PART_IND="F", 1, 0)) as [FullTime],
SUM(IIF(BANINST1_SZVIRST.SZVIRST_FULL_PART_IND="P", 1, 0)) as [PartTime],
SUM(IIF(SZVIRST_LEVL_CODE="01", 1, 0)) as [Graduate],
SUM(IIF(SZVIRST_LEVL_CODE="02", 1, 0)) as [UnderGraduate],
我将COUNT()
更改为SUM()
只是因为感觉更自然,因为IIF()
返回1或0.您可以将其更改为{{1}这也很好。
如果您想要结合几个条件来计算,公式会略有变化。
对于insstance,如果您想要计算所有同时也在毕业生中的全职人员,您可以使用:
COUNT(Iif(<condition>, 1, null))
这里我们将两个条件放在SUM(IIF(BANINST1_SZVIRST.SZVIRST_FULL_PART_IND="F" AND SZVIRST_LEVL_CODE="02", 1, 0)) AS [FullTimeUnderGraduates]
公式的第一个参数中。如果两者都是IIF()
,则返回TRUE
,然后汇总所有1
个。
最后,如果您想在查询中1
/ count
sum
和Graduate
,那么您无法在Under Graduates
中排除它们}子句。因此,您需要删除以下内容:
HAVING
否则就像
那样的测试((BANINST1_SZVIRST.SZVIRST_LEVL_CODE)="01")
总是会返回iif(BANINST1_SZVIRST.SZVIRST_LEVL_CODE="01", 1, 0)
和
1
将始终返回iif(BANINST1_SZVIRST.SZVIRST_LEVL_CODE="02", 1, 0)
以下内容应该在您的数据库中运行,并为您提供上述逻辑的良好工作示例:
0