2017-01-11 1 views
0

Ich habe eine schlechte Tabellenstruktur. Ich versuche, es so wenig wie möglich zu modifizieren, weil das eigentliche Problem komplizierter ist. Ich bin in SQL Server arbeiten 2005SQL Server: Komma ERSETZEN und kombinieren Sie es mit ähnlicher Zeile

Hier ist meine Tabelle:

tbl_item

id | item 
---+------ 
1 | car 
2 | car 
3 | car, => This is what I focus 
4 | jet 
5 | jet, car => This is just an example of the comma purpose 

Abfrage:

SELECT item, count(*) AS sum 
FROM tbl_item 
GROUP BY item 
ORDER BY sum DESC 

Ergebnis:

item | sum 
--------+------- 
car  | 2 
car, | 1 
jet  | 1 
jet,car | 1 

Was ich will, ist wie folgt:

item  | sum 
---------+-------- 
car  | 3 
jet  | 1 
jet, car | 1 => actually I don't care about this, but this just for example 

Ich habe versucht:

SELECT REPLACE(item,',',''), count(*) AS sum 
FROM tbl_item 
GROUP BY item 
ORDER BY sum DESC 

Aber das Ergebnis ist:

item  | sum 
---------+------ 
car  | 2 
car  | 1 => still in the different row 
jet  | 1 
car, jet | 1 

ich dies mit PHP so leicht manipulieren kann, aber ich frage mich, wie um dies mit reinem SQL Server zu tun.

Vielen Dank im Voraus!

+0

@ k48 Dank für bearbeiten meine Frage Gruppe – plonknimbuzz

+1

Versuchen von ersetzen (Artikel, ‚‘, ‚‘) – detellda

+0

@detellda Arbeit wie Charme Mann. Kannst du deine Antwort posten? ich werde das für die richtige antwort signieren – plonknimbuzz

Antwort

3

Versuchen:

GROUP BY REPLACE(item,',','') 

Dadurch werden die Elemente normalisieren, dann die Gruppe auf sie.

3

Sie müssen es die Gruppe von Klausel hinzuzufügen:

SELECT REPLACE(item,',',''), count(*) AS sum 
FROM tbl_item 
GROUP BY replace(item,',','') 
ORDER BY sum DESC 
+0

das ist auch die richtige antwort, aber delellda ist die erste antwort. Danke für die Hilfe und bearbeite meine Frage – plonknimbuzz

Verwandte Themen