2016-07-04 15 views
1

Meine product Tabelle sieht wie folgt aus:Separate WHERE IN-Bedingungen für jede Spalte

id_product | product_count | product_name 
1   | 10    | name1 
2   | 20    | name2 
3   | 20    | name3 
4   | 52    | name4 
5   | 30    | name5 
6   | 50    | name6 

Und ich möchte eine Abfrage tun, das wird zur Folge haben:

product_group_name | product_group_name | product_group_name |...more groups 
30(sum)    | 72(sum)   | 50(sum)   |...more values 

wo Gruppe id_product sein wird, wie (1,2 ODER 3,4 ODER 1,4,5) und Gruppenname wird Alias ​​sein.

Hier SQL-Code, um eine einzelne Spalte zu machen:

SELECT 
    cast(SUM(product.product_count) as float) as group_name 
FROM  
    product 
WHERE 
    product.id_product in (608,913,528,529,920,406,407,408,912,919,918,917,924,926,925) 

und Ergebnis dieser Abfrage ist:

| group_name | 
| 200  | 

Ist es möglich, mehr Spalten mit Gruppennamen hinzufügen? Es ist wichtig, dass sie Spalten sind, keine Reihen.

+0

wenn ich u rigth bekam, ja Sie Koma verwenden can..just (‚‘) nach Spalte, .. SELECT cast (SUM (product.product_count) als float) als group_name, sum (column2) als group_name2' –

+0

ich denke, man folgende Dinge 1) zu tun haben. Machen Sie einen Beitritt mit der Tabelle product_group 2). Führen Sie eine "Gruppierung nach" unter Verwendung der Gruppennummer aus und führen Sie eine Operation sum() durch 3). Sobald Sie im obigen Schritt Ergebnisse erhalten, können Sie die Ergebnisse mit einer der hier beschriebenen Methoden umsetzen - http://stackoverflow.com/questions/13372276/simple-way-to-transpose-columns-and-rows-in -sql – ArunGeorge

Antwort

0

Wenn ich Sie richtig verstehe, eine Möglichkeit, es zu tun ist durch bedingte Aggregation:

SELECT 
    cast(SUM(
     CASE WHEN product.id_product in (608,913,528, ... ,924,926,925) 
     THEN product.product_count ELSE NULL END) as float) as group_name1 
    ,cast(SUM(
     CASE WHEN product.id_product in (1,2,3) 
     THEN product.product_count ELSE NULL END) as float) as group_name2 
    ,cast(SUM(
     CASE WHEN product.id_product in (4,5) 
     THEN product.product_count ELSE NULL END) as float) as group_name3 
FROM 
    product 
; 
Verwandte Themen