Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757

    Query con SELECT CASE WHEN

    Ciao al forum.

    All'interno di un DB Mysql ho questa tabella:

    do_Table
    codice:
    ID	EMAIL	ORIGINE		ORIGINE_N
    1	XXX	IT		1
    2	XXX	MX		NULL
    3	XXX	MXDF		NULL
    4	XXX	IT		0
    5	XXX	IT		1
    6	XXX	MX		NULL
    E con questa query:

    codice:
    SELECT CASE WHEN origine IN ('MX','MXDF')
                THEN 'MX'
    
                WHEN origine = 'IT'
                THEN 'IT'
    
                WHEN origine = 'IT' AND origine_n = 0
                THEN 'IT_0'
    
                WHEN origine = 'IT' AND origine_n = 1
                THEN 'IT_1'
    
                ELSE 'Other' END     as my_group
         , COUNT(*) AS tot
      FROM db_mysql.do_Table
    GROUP
        BY my_group
    ORDER
        BY tot DESC
    Vorrei avere questo output:

    codice:
    my_group		tot
    IT_origine_N_0		1
    IT_origine_N_1		2
    IT_tot			3
    MX			3
    Other			0
    Ma non ci riesco, perchè l' output è sempre questo, perchè?

    codice:
    my_group		tot
    IT_tot			3
    MX			3
    Other			0
    Dove sbaglio?
    A S P : tutto il resto è noia...
    L I N U X : forse mi "converto"...

  2. #2
    perché IT te lo becca subito la seconda WHEN!

  3. #3
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Originariamente inviato da optime
    perché IT te lo becca subito la seconda WHEN!
    Si è vero, grazie per il suggerimento, ma non riesco ad avere il totale di IT.

    Output:
    codice:
    my_group	tot
    IT_1		3696
    MX		432
    IT_0		352
    Other		103
    Query:
    codice:
    SELECT CASE WHEN origine IN ('MX','MXDF')
                THEN 'MX'
    
                WHEN origine = 'IT' AND origine_n = 0
                THEN 'IT_0'
    
                WHEN origine = 'IT' AND origine_n = 1
                THEN 'IT_1'
    
                WHEN origine = 'IT'
                THEN 'IT'
    
                ELSE 'Other' END     as my_group
         , COUNT(*) AS tot
      FROM db_mysql.do_Table
    GROUP
        BY my_group
    ORDER
        BY tot DESC
    A S P : tutto il resto è noia...
    L I N U X : forse mi "converto"...

  4. #4
    dentro IT ci andranno quei record con origine_n che non è né 0 né 1

  5. #5
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Originariamente inviato da optime
    dentro IT ci andranno quei record con origine_n che non è né 0 né 1
    Se intendi questo, non cambia nulla... :
    codice:
    SELECT CASE 
                WHEN origine IN ('MX','MXDF')
                THEN 'MX'
    
                WHEN origine = 'IT' and origine_n = 0
                THEN 'IT_0'
    
                WHEN origine = 'IT' and origine_n = 1
                THEN 'IT_1'
    
                WHEN origine = 'IT' AND (origine_n <> 1 OR origine_n <> 0)
                THEN 'IT'
    
                ELSE 'Other' END     as my_group
    
         , COUNT(*) AS tot
      FROM mysql.do_Table
    GROUP
        BY my_group
    ORDER
        BY tot DESC
    A S P : tutto il resto è noia...
    L I N U X : forse mi "converto"...

  6. #6
    no, intendo che già ci vanno da sole! origine_n può valore solo 0 o 1?

  7. #7
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Originariamente inviato da optime
    no, intendo che già ci vanno da sole! origine_n può valore solo 0 o 1?
    Si, origine_n o è 0 o è 1.
    A S P : tutto il resto è noia...
    L I N U X : forse mi "converto"...

  8. #8
    e quindi in IT da solo non andrà mai niente, perché già catturati dai due WHEN precedenti!

  9. #9
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Originariamente inviato da optime
    e quindi in IT da solo non andrà mai niente, perché già catturati dai due WHEN precedenti!
    Così nemmeno prende nulla:

    codice:
    WHEN origine = 'IT' AND (origine_n = 1 OR origine_n = 0)
                THEN 'IT'
    A S P : tutto il resto è noia...
    L I N U X : forse mi "converto"...

  10. #10
    ti ho già spiegato il motivo!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.