Lösung hat zwei Schritte.
- Aufzählung Satz von Krankheiten, an denen jeder Patient leidet; Speichern Sie es in einer separaten Tabelle
- Verwenden Sie die obige Tabelle, um verschiedene Kombination von Krankheiten sowie die Anzahl der Patienten mit diesen Kombinationen aufzulisten.
nun für den Schritt # 1 benötigen Sie eine gespeicherte Prozedur, die als untergeht:
DECLARE @prv int
DECLARE @nid int
DECLARE @dname varchar(100)
DECLARE @combi varchar(500)
DECLARE c1 CURSOR FOR
SELECT name_id, disease_name
FROM patients
JOIN diseases ON patients.disease_id = diseases.disease_id
ORDER BY name_id, disease_name;
DELETE FROM diseasecombi;
OPEN c1
FETCH NEXT FROM c1 INTO @nid, @dname
SET @prv = @nid
SET @combi = ''
WHILE @@FETCH_STATUS = 0
BEGIN
IF @prv <> @nid
BEGIN
INSERT INTO diseasecombi (name_id, suffers) VALUES (@prv, @combi)
SET @prv = @nid
SET @combi = ''
END
IF LEN(@combi) > 0 SET @combi = @combi + ', '
SET @combi = @combi + @dname
FETCH NEXT FROM c1 INTO @nid, @dname
END
INSERT INTO diseasecombi(name_id, suffers) VALUES (@prv, @combi)
CLOSE c1
DEALLOCATE c1
Die gespeicherte Prozedur eine Tabelle produzieren oben, die wie
name_id suffers
------- -------------------------------
1 Chickenpox, Mumps
2 Chickenpox, Fibroids, Measles
3 Chickenpox, Mumps
4 Chickenpox, Measles
5 Chickenpox, Measles
6 Chickenpox
7 Rashes
aussehen Für Schritt # 2 ist die Abfrage wie folgt:
SELECT suffers, COUNT(*) AS Patients
FROM diseasecombi
GROUP BY suffers
ORDER BY suffers
W hich erzeugt eine Ausgabe wie unter:
Diseases Patients
------------------------------ ----------
Chickenpox 1
Chickenpox, Fibroids, Measles 1
Chickenpox, Measles 2
Chickenpox, Mumps 2
Rashes 1
nach meinem Verständnis in der Tabelle angegeben sind alle verschiedenen Kombinationen, rechts ..und auch Ihre Anforderung nicht die klar hier zu wissen, wie Frage zu verbessern: https: //spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar
Würden Sie uns bitte auch die gewünschte Ausgabe zeigen? Dein Problem ist zumindest für mich nicht klar genug! –
Name_id 1 und 4 haben gleiche Krankheit_ID (1,2).Name_id 2 und 5 haben dieselbe disease_id (2) – user2378895