다른 열과 동일한 정보를 포함하지만 더 필터링 된 SQL 쿼리에 추가 열을 추가하기 위해이 투쟁 (SQL을 사용하는 비트 멍청이)이 있습니다. 예를 들어 조금 설명하겠습니다.
SELECT
aMain.MaintGroupName,
CCALARMS = (SELECT COUNT(ALARMIDKEY) --subquery begins
FROM REPORTER.REPORTER_STATUS
WHERE
(MAINTMODECRONTAB != 'Y'
AND SUPPRESSESCL < 4
AND SPMAUTO != 1
AND ORIGINALSEVERITY > 0)
AND ((AIWAVER = 3 AND EVENTACTOR = 1)
OR
((AIWAVER < 3 OR AIWAVER IS NULL)
AND ((CONTROLCENTREVIEW = 1
AND ORIGINALSEVERITY = 5)
OR (CONTROLCENTREVIEW = 2)
OR (ALERTGROUP = 'CHECKLIST')
)
)
)
), --subquery ends
COUNT(rSTA.ALARMIDKEY) -- same column as previous, but with no conditions
FROM
REPORTER.reporter.REPORTER_STATUS rSTA
INNER JOIN
AIWA2.dbo.MaintGroup aMain ON aMain.MaintGroupId = rSTA.ALARMOWNERID
GROUP BY
aMain.MaintGroupName
그룹 이름, 특수 조건이있는 알람, 조건이없는 동일한 알람 및 그룹 이름별로 모든 것을 그룹화합니다 (모든 그룹에 대한 특정 알람 및 모든 알람 표시). 이 쿼리는 올바르게 그룹화 된 그룹 이름과 모든 알람을 보여 주지만 "CCALARMS"는 그룹이 아닌 모든 그룹에 대해 계산 된 것으로 표시됩니다. 하위 쿼리의이 개수가 쿼리에서 그룹화되도록하려면 어떤 조건을 추가해야합니까? 추가 조인에 rSTA.ALARMIDKEY = CCALARM.ALARMIDKEY와 같은 것이 필요합니까?
CCALARMS가 계산되는 모든 그룹에 대해 알 수 있듯이 지금 얻은 정보는 다음과 같습니다. 그래도 어떻게 배포해야할지 궁금합니다. 경보
내가 이루고 싶은 것이 분명했으면 좋겠어요. 그렇지 않다면 더 자세한 내용을 알려 드리겠습니다. 미리 감사드립니다!
조건부 집계 :
SELECT
aMain.MaintGroupName,
CCALARMS = COUNT(
CASE WHEN
(MAINTMODECRONTAB != 'Y'
AND SUPPRESSESCL < 4
AND SPMAUTO != 1
AND ORIGINALSEVERITY > 0)
AND ((AIWAVER = 3 AND EVENTACTOR = 1)
OR
((AIWAVER < 3 OR AIWAVER IS NULL)
AND ((CONTROLCENTREVIEW = 1
AND ORIGINALSEVERITY = 5)
OR (CONTROLCENTREVIEW = 2)
OR (ALERTGROUP = 'CHECKLIST')
)
)
)
THEN rSTA.ALARMIDKEY END),
COUNT(rSTA.ALARMIDKEY) -- same column as previous, but with no conditions
FROM
REPORTER.reporter.REPORTER_STATUS rSTA
INNER JOIN
AIWA2.dbo.MaintGroup aMain ON aMain.MaintGroupId = rSTA.ALARMOWNERID
GROUP BY
aMain.MaintGroupName
테스트되지 않은 괄호를 확인하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다