Как подсчитать уникальные вхождения строки в таблицу для отдельных записей в вершине 5 - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь автоматически подсчитать уникальные вхождения строки, сохраненной в таблице. В настоящее время у меня есть счетчик строки, но только когда пользователь выбирает строку, и он присваивает каждой записи одинаковое значение счетчика.

Например

Ниже изображение моей текущей таблицы:

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 в предложение where в count. DIA_SELECTED - это первый столбец таблицы, а P33_DIA - элемент, в котором хранится номер ссылки DIA, относящийся к выбранной записи.

Вывод выглядит так:

Table with extra where clause

Как видите, существует только один счет. Все еще не решает всю проблему, но немного лучше.

Таким образом, чтобы подвести итог, есть способ подсчитать, подсчитать случаи в отдельности и вставить их в одинаковые требования. Таким образом, если есть три теста, как на изображениях, в столбце подсчета будет «3», где требование = «тест», и если будет одна запись с «проверить систему», в подсчете будет «1». колонка.

Также для большего контекста я не знаю, что пользователь введет в требование, поэтому я не могу сравнить с заранее заданными строками.

Я новичок в переполнении стека. Надеюсь, я объяснил достаточно, и это не слишком запутанно.

1 Ответ

0 голосов
/ 27 августа 2018

Следующий экстракт:

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

Что бы дать вам - для каждой строки количество требований, которые идентичны. Я не совсем уверен, что это то, что вы ищете, но если это не так, это должно дать вам некоторые идеи о том, как продвигаться (или позволить вам указать, где я не понял ваш запрос)

...