Ich habe diesen Kampf (Bit Noob mit SQL), um zusätzliche Spalte in SQL-Abfrage hinzuzufügen, die gleiche Informationen wie andere Spalte enthält, aber mehr gefiltert. Ich werde ein Beispiel geben und ein wenig erklären:Hinzufügen von zusätzlichen Spalte in SQL-Abfrage, die gleiche Informationen wie zuvor enthält, aber mehr gefiltert
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
Das mag ich mir Gruppennamen bekommen, Alarme mit speziellem Zustand, gleichen Alarmen ohne jede Bedingung und Gruppe alles von Gruppennamen (zeigen mir spezifische Alarme und alle Alarme für jede Gruppe). Diese Abfrage zeigt mir einen Gruppennamen & alle Alarme korrekt gruppiert, aber diese "CCALARMS" werden nur für jede Gruppe gezählt, nicht nach gruppiert. Welche Bedingung sollte ich hinzufügen, damit diese Anzahl in einer Unterabfrage in einer Abfrage gruppiert wird? Vielleicht wird etwas wie rSTA.ALARMIDKEY = CCALARM.ALARMIDKEY in zusätzlichen Join benötigt?
Hier ist, was ich jetzt bekomme, wie Sie für jede Gruppe sehen können CCALARMS gezählt werden. Ich frage mich, wie ich es verteilen sollte. ALARM
Ich hoffe, es war klar, was ich erreichen möchte, wenn nicht, lass es mich wissen, ich werde mehr Details geben. Danke im Voraus!
getestet Wir verwenden Microsoft SQL Server. – Robbac