2017-11-24 1 views
0

Ich habe ein Problem mit meiner Abfrage. Ich habe diese Daten: Überprüfen Sie das hier ist vollständige Daten und meine Tabelle. http://sqlfiddle.com/#!9/f440d7/1Wie zeigen mehrere Bedingung mit mysql

Bitte ich hoffe, Sie können mir helfen.

Mein erwartetes Ergebnis soll wie folgt sein:

|PartID   | IdMesin |ket1    |ket2  |Ket3| 
|----------  |-------- |---------------- |---------| |    
|AELE-00071-XX-KGX|BS 150U |-     |1.00 Tes1|- | 
|GCXX-MX070-XX-KGX|BS 320F |0.50 Tes3, 2.00 Tes4|0.50 Tes2|- | 

Ich hoffe, dass Sie mir helfen können, dieses Problem zu beheben. Anyhelp kann geschätzt werden.

+0

'Bitte helfen Sie mir zu überprüfen, wo Abfrage ist falsch '... Sie müssen dies selbst in Ihrer Frage an uns beantworten. –

+0

Ich habe meine Frage bearbeitet, können Sie mir bitte helfen? –

Antwort

0

case when sollte in group_concat verwendet werden:

SELECT partid, 
     idmesin, 
     COALESCE(GROUP_CONCAT(CASE WHEN idshift = '1' THEN CONCAT(ROUND(
       TIME_TO_SEC(
       MAKETIME(
       durasi + 0, 
       SUBSTRING_INDEX(durasi, 'Jam ', - 1) + 0, 0))/3600, 2), ' ', 
       keterangandowntime) end), '-') ket1, 
     COALESCE(GROUP_CONCAT(CASE WHEN idshift = '2' THEN CONCAT(ROUND(
       TIME_TO_SEC(
       MAKETIME(
       durasi + 0, 
       SUBSTRING_INDEX(durasi, 'Jam ', - 1) + 0, 0))/3600, 2), ' ', 
       keterangandowntime) end), '-') ket2, 
     COALESCE(GROUP_CONCAT(CASE WHEN idshift = '3' THEN CONCAT(ROUND(
       TIME_TO_SEC(
       MAKETIME(
       durasi + 0, 
       SUBSTRING_INDEX(durasi, 'Jam ', - 1) + 0, 0))/3600, 2), ' ', 
       keterangandowntime) end), '-') ket3 
FROM trans_lhpdtdw 
WHERE divisiid = 'IJ001' 
     AND tanggal = '2017-11-20' 
     AND idlocation LIKE '%3%' 
GROUP BY partid, 
      idmesin 

demo in SQLFiddle See.