0

詳細:

lo means layout
lo_act_id ( activity id ), lo_time ( time spent ) , up_time and down_time , lo_description , lo_client_id

アクティビティ ID < ~ 99 の場合はアップタ​​イムを意味します

アクティビティ ID > から 99 はダウンタイムを意味しますが、ダウンタイムがある場合は、メモ/原因を確認したいと思います。

これは私がうまく機能するクエリですが、取得して表示する方法がわかりませんlo_description

SELECT * , 
  SUM( IF( `lo_act_id` > 99 , lo_time , 0 )) AS down_time,
  SUM( IF( `lo_act_id` < 99 , lo_time , 0 ,lo_desc )) AS up_time
FROM tbl_Layout
LEFT  JOIN tbl_Client ON lo_client_id=client_code
GROUP BY lo_client_id

これは私が得たものです

Client   Spent Time  Downtime
1        216           3 
20       250           0 
16       10           16 
35       60            0
60       30            0

これは私が取得したいものです:

Client    Spend Time    Downtime    Note
1         216           3           Replace Network Card
20        250           0     
16        10            16          Replace Main Board
                                    Monthly Maintenance
                                    Hurricane affect facilities
35        60            0
60        30            0
4

1 に答える 1

0

CAST「分」と「分」を取り除くために使用します (このフィールドには、秒や時間ではなく、常に分が含まれると仮定します)。

GROUP_CONCAT説明をまとめるために使用します。

SELECT
  tbl_Client.*,
  SUM(IF(`lo_act_id` > 99, CAST(lo_time AS UNSIGNED), 0)) AS down_time,
  SUM(IF(`lo_act_id` < 99, CAST(lo_time AS UNSIGNED), 0)) AS up_time,
  GROUP_CONCAT(IF(`lo_act_id` > 99, lo_description, NULL) SEPARATOR "\n") AS note
FROM tbl_Layout
LEFT JOIN tbl_Client ON lo_client_id=client_code
GROUP BY lo_client_id
于 2013-02-12T21:51:10.260 に答える