2017-03-15 3 views
0

Je ne peux pas utiliser le nom d'alias MySQL avec instruction CASE, il donne une erreur de syntaxe comme suit:utilisant le nom d'alias MySQL avec la déclaration de cas après alors

SELECT IFNULL(min(mFR.date),'') AS `firstDate`, 
    CASE `data` 
     WHEN 'Sales'   THEN IFNULL(SUM(qty),0) AS `sales` 
     WHEN 'Return'  THEN IFNULL(SUM(qty),0) AS `return` 
     WHEN 'Receiving In' THEN IFNULL(SUM(qty),0) AS `receiving_in` 
     WHEN 'Receiving Out' THEN IFNULL(SUM(qty),0) AS `receiving_out` 
     WHEN 'Stock'   THEN IFNULL(SUM(qty),0) AS `stock` 
    END 
FROM `full_report` 

Il me donne (erreur de syntaxe près de [AS sales]) .

Des suggestions?

+0

L'alias sera pour toute l'affaire, et non pas chaque branche – GurV

+0

@GurV est il y a une solution pour cela? – CairoCoder

Répondre

2

Vous essayez d'utiliser un alias pour chaque branche du cas, ce qui n'est pas possible.

Je pense que vous voulez utiliser autre affaire:

SELECT IFNULL(min(mFR.date),'') AS `firstDate` 
    ,sum(CASE `data` WHEN 'Sales'   THEN qty END) AS `sales` 
    ,sum(CASE `data` WHEN 'Return'  THEN qty END) AS `return` 
    ,sum(CASE `data` WHEN 'Receiving In' THEN qty END) AS `receiving_in` 
    ,sum(CASE `data` WHEN 'Receiving Out' THEN qty END) AS `receiving_out` 
    ,sum(CASE `data` WHEN 'Stock'   THEN qty END) AS `stock` 
FROM `full_report` 
+0

Cela a fonctionné, merci. – CairoCoder

+0

Juste pour mettre des virgules après chaque cas;) – CairoCoder