Ich habe derzeit eine Abfrage, die in eine Inventory-Tabelle (von Servern) ausgeht, welche "Developer" filtern und eine Liste von verschiedenen Benutzern aus einer Audit- verwandte Tabelle. Im Wesentlichen versuchen, herauszufinden, wer Zugriff auf Entwicklungsserver in diesem bestimmten Inventar hat.SQL Server: Inventory Issue (mit Unterabfrage)
Alles funktionierte, bis ich die zweite Zeile hinzugefügt, die ich weiter unten im Code auf Kommentar:
select distinct tAudit.[USER_ID]
--, count(tAudit.[USER_ID]) AS [USER_COUNT]
from table_audit as tAudit
where tAudit.inst_name IN (
SELECT (SUBSTRING([Computer Name],0,CHARINDEX('.',[Computer Name],0))) AS INST_NAME
FROM table_server_inventory
WHERE [SQL Server Edition] = 'Developer'
)
order by tAudit.user_id asc
Also, die Frage ist: Wie kann ich zählen, wie oft ein bestimmter Benutzer angezeigt wird? Gibt es einen Konflikt mit der Tatsache, dass ich distinct verwende? Es gibt eine weitere Frage, die ich gestellt habe, nur um zu sehen, ob ich auf dem richtigen Weg bin. Dies ist ein Beispiel:
select tAudit.[USER_ID]
, count(tAudit.[USER_ID]) AS [USER_COUNT]
from table_audit as tAudit
where tAudit.user_id IN ('user_001', 'user_009', 'user_199', 'user_222')
group by tAudit.user_id
Und es sah so etwas wie diese:
USER_ID USER_COUNT
user_001 5
user_009 32
user_199 14
user_222 8
Idealfall, wenn die primäre Abfrage funktioniert es oben wie das Beispiel aussehen wird, nur mit Dutzenden mehr Ergebnissen.
HINWEIS: Die Tabelle_audit ist tatsächlich sehr groß und listet Server und Benutzer jedes Mal auf. Beispiel:
COMPUTER_NAME USER_ID
serverAA user_001
serverAA user_009
serverAA user_199
serverAA user_222
serverBB user_001
serverBB user_009
serverCC user_001
serverCC user_199
serverCC user_222
Ihre zweite Abfrage ist der richtige Weg zu gehen. COUNT ist eine Aggregatfunktion und erfordert die GROUP BY-Klausel, die in Ihrer ersten Abfrage fehlt. – squillman
Ich habe versucht, die GROUP BY-Klausel für die erste Abfrage hinzuzufügen, und meine Logik und Platzierung muss deaktiviert sein. Ich würde nur alle Benutzer manuell wie in der zweiten Abfrage auflisten, aber es gibt fast 200 von ihnen. Plus die Liste ist ein bisschen dynamisch - es kann sich in einer Woche ändern. – Erik
GROUP BY geht nach WHERE und vor ORDER BY. Können Sie die erste Abfrage mit der GROUP BY, die Sie versucht haben, veröffentlichen? – squillman