如何为表5中的单独记录计算表中字符串的唯一出现次数

时间:2018-08-27 15:56:37

标签: sql oracle oracle-apex-5

我试图自动计算保存在表中的字符串的唯一出现次数。目前,我有一个字符串的计数,但是只有当用户选择该字符串时,它才会为每个记录赋予相同的计数值。

例如

下面是我当前表格的图像:

Current Table

从图像中您可以看到有一个需求列和一个计数列。我已经指出,当用户选择一个需求记录(每个需求记录都有一个链接)时,它将把需求文本插入到名为“ P33_REQUIREMENT”的需求项中,这样计数就可以具有一个要比较的值。

这是我目前拥有的SQL:

SELECT (SELECT COUNT(*) 
        FROM DIA_ASSOCIATED_QMS_DOCUMENTS 
        WHERE REQUIREMENT = :P33_REQUIREMENT 
        group by REQUIREMENT 
       ) AS COUNT, 
       DPD.DIA_SELECTED, 
       DPD.Q_NUMBER_SELECTED, 
       DPD.SECTION_SELECTED, 
       DPD.ASSIGNED_TO_PERSON, 
       DAQD.REFERENCE, 
       DAQD.REQUIREMENT, 
       DAQD.PROGRESS, 
       DAQD.ACTION_DUE_DATE, 
       DAQD.COMPLETION_DATE, 
       DAQD.DIA_REF,  
       DA.DIA, 
       DA.ORG_RISK_SCORE 
FROM DIA_PROPOSED_DETAIL DPD, 
     DIA_ASSOCIATED_QMS_DOCUMENTS DAQD,   
     DIA_ASSESSMENTS DA
WHERE DPD.DIA_SELECTED = DAQD.DIA_REF 
  AND DPD.DIA_SELECTED = DA.DIA

这是用于在图片中创建表格的sql。

此问题是,当用户选择需求值时,它给每个记录相同的计数。我还可以通过将AND DIA_SELECTED = :P33_DIA添加到count的where子句中来解决此问题。 DIA_SELECTED是表中的第一列,而:P33_DIA是存储与所选记录相关的DIA引用号的项目。

其输出如下:

Table with extra where clause

如您所见,只有一个数。仍然不能解决整个问题,但要好一些。

因此,总而言之,有一种方法可以进行计数,分别计算发生的次数并将其插入相同的需求中。因此,如果像图像中那样进行三个测试,则count列中的要求为“ test”时将为“ 3”,如果带有“ test the system”的记录为一个,则计数中将为“ 1”柱。

此外,对于更多上下文,我将不知道用户将在需求中输入什么,因此无法与预定字符串进行比较。

我是堆栈溢出的新手,我希望我已经对它进行了足够的解释,并且它并不太混乱。

1 个答案:

答案 0 :(得分:2)

以下摘录:

SELECT (SELECT COUNT(*) 
        FROM DIA_ASSOCIATED_QMS_DOCUMENTS 
        WHERE REQUIREMENT = :P33_REQUIREMENT group by REQUIREMENT ) AS COUNT

可以替换为

SELECT (SELECT COUNT(*) 
        FROM DIA_ASSOCIATED_QMS_DOCUMENTS 
        WHERE REQUIREMENT = DAQD.REQUIREMENT ) AS COUNT

这将给您-对于每一行,相同数量的需求。 我不能完全确定这是您追求的目标,但是如果不是,它应该为您提供一些有关进展的想法(或让您指出我在哪里无法理解您的请求)