Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wykonać zapytanie SQL za pomocą CASE

Jest tak wiele rzeczy nie tak, że nie wiadomo, od czego zacząć.

Mieszasz dwie formy CASE wyrażenie. Jeden formularz to:

CASE <expression>
    WHEN <value> THEN <result>
    WHEN <value> THEN <result>
    ...
END

drugi to:

CASE
    WHEN <condition> THEN <result>
    WHEN <condition> THEN <result>
    ...
END

Próbujesz użyć SELECT zapytanie jako wartość, ale brakuje w nim FROM klauzuli i musisz umieścić zapytanie w nawiasach, aby użyć go jako wartości. Podejrzewam, że chciałeś, aby to było zapytanie z tej samej tabeli, w takim przypadku nie powinieneś wykonywać podzapytania, powinieneś po prostu użyć funkcji agregacji w głównym zapytaniu.

CASE wyrażenie powinno być częścią SELECT listy, a nie po FROM klauzula.

Jeśli chcesz utworzyć oddzielne kolumny w danych wyjściowych dla każdego przypadku, nie mogą one znajdować się w jednym CASE wyrażenie.

Masz wszystkie nazwy tabel i kolumn w podwójnych cudzysłowach, MySQL używa backticków do cytowania nazw.

Nie potrzebujesz SELECT DISTINCT podczas korzystania z GROUP BY .

Nie możesz odwoływać się do aliasu w SELECT lista w tym samym zapytaniu, z wyjątkiem GROUP BY , ORDER BY i HAVING .

Powinno być:

SELECT MONTH(Facturation) AS month, LRU, Client,
    AVG(CASE WHEN MONTH(Factuation) = 1 AND Facturation BETWEEN 1 AND 6
        THEN Montant_fac_eur END) AS c1,
    AVG(CASE WHEN MONTH(Factuation) = 2 AND Facturation BETWEEN 2 AND 7
        THEN Montant_fac_eur END) AS c2,
    AVG(CASE WHEN MONTH(Factuation) = 3 AND Facturation BETWEEN 3 AND 8
        THEN Montant_fac_eur END) AS c3,
    AVG(CASE WHEN MONTH(Factuation) = 4 AND Facturation BETWEEN 4 AND 9
        THEN Montant_fac_eur END) AS c4,
    ...
FROM foundry_sync.data
GROUP BY `LRU`, `Client`, `Facturation`
ORDER BY Client, month


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy można wstawić dane do widoku MySQL?

  2. Jak zaktualizować tabelę z jednego serwera na drugi?

  3. Jaki jest najłatwiejszy sposób na wyczyszczenie bazy danych z CLI za pomocą manage.py w Django?

  4. Wywołanie funkcji członkowskiej rowCount() na obiekcie niebędącym obiektem

  5. Jak skonfigurować parametry połączenia dla bazy danych MySQL w projekcie C# bez korzystania z okien dialogowych?