陷入一个涉及MS ACCESS DB和两个表的问题,试图通过计数获得两个不同的记录结果。
我正在使用的两个表都有一个主键字段以及一个包含1或0的字段以标记记录是否被标记为删除。
问题是我无法从此查询中获得总数和差额,我只能检索所有记录的计数,而不仅仅是未标记为删除的记录。
示例类别有两个与之关联的内容记录,但一个在删除字段中具有1,另一个具有0。我正在尝试获取数据。
我尝试使用SUM,但这样做时收到来自MS ACCESS的错误。这是我在下面使用的当前查询字符串。
要澄清一下,这样做的原因是这样,当我从记录集取回数据后,便可以得到两个结果并在客户端处理差异。
一个类别可能具有多个内容,并且与每个类别关联的某些内容可能具有标记为删除的某些记录,而其他则可能没有。
下面是我正在使用的SQL。
Count(CONTENT.contentId) as cntDifference SUM(CASE WHEN cntDifference = 1
then 1 else 0) has also not proven to be successful.
SELECT CATEGORY.categoryId, CATEGORY.categoryTitle, CATEGORY.categoryDate,
Count(CONTENT.contentId) AS cntTotal, Last(CONTENT.contentDate) AS cntDate,
CATEGORY.isDeleted AS catDel
FROM CATEGORY
LEFT JOIN CONTENT ON CATEGORY.categoryId = CONTENT.categoryId
GROUP BY CATEGORY.categoryId, CATEGORY.categoryTitle,
CATEGORY.categoryDate, CATEGORY.userLevel, CATEGORY.isDeleted HAVING
(((CATEGORY.isDeleted)=0))
ORDER BY CATEGORY.categoryTitle
答案 0 :(得分:1)
HAVING (((CATEGORY.isDeleted)=0))
过滤掉已删除的记录,因此您的未删除计数与所有记录的计数相同。
要获取已删除/未删除的计数,请将其删除并使用:
SUM(IIF(CATEGORY.isDeleted=0,1,0)) AS CountOfNonDeleted
对于未删除
和
SUM(IIF(CATEGORY.isDeleted=1,1,0)) AS CountOfDeleted
代表已删除。您还可以使用这些表达式来获得总计数,已删除计数和未删除计数之间的差异。