我试图自动计算保存在表中的字符串的唯一出现次数。目前,我有一个字符串的计数,但是只有当用户选择该字符串时,它才会为每个记录赋予相同的计数值。
例如
下面是我当前表格的图像:
从图像中您可以看到有一个需求列和一个计数列。我已经指出,当用户选择一个需求记录(每个需求记录都有一个链接)时,它将把需求文本插入到名为“ 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引用号的项目。
其输出如下:
如您所见,只有一个数。仍然不能解决整个问题,但要好一些。
因此,总而言之,有一种方法可以进行计数,分别计算发生的次数并将其插入相同的需求中。因此,如果像图像中那样进行三个测试,则count列中的要求为“ test”时将为“ 3”,如果带有“ test the system”的记录为一个,则计数中将为“ 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
这将给您-对于每一行,相同数量的需求。 我不能完全确定这是您追求的目标,但是如果不是,它应该为您提供一些有关进展的想法(或让您指出我在哪里无法理解您的请求)