繁体   English   中英

MySQL查询IF条件和分组依据

[英]Mysql Query for IF condition and Group by

SELECT      ps.job_no, ps.booking_no,
            ps.type,ps.shipped_by, ps.invoice_no,
            ps.transporters_id,ps.clients_id,ps.return_terminal,
            ps.destinations_id,ps.forwarder_name,              
            containers.container_size,containers.container_no,
            containers.truck_no,
            ps.driver_cell_no,ps.shipping_line_name,
            containers.cro_no,vessels.vessel_name,vessels.eta,
            containers.empty_pickup_point,containers.loading_point,
            ps.particular 
  FROM      planning_sheet AS ps 
                LEFT JOIN vessels 
                    ON vessels.bookingno= ps.booking_no
                LEFT JOIN containers 
                    ON containers.bookingno = ps.booking_no
GROUP BY ps.clients_id 

我是构建此类复杂查询的新手,查询定义如下,我希望此查询中针对“ clients_id”的所有记录我针对此查询得到一条记录。

我也想在“类型= 0”中的“类型”列中写入“空气”或“类型= 1”而不是“海洋”。

在使用GROUP BY子句之前,您必须先聚合一些列。 有关某些汇总功能,请参见此处。 但是,如果要修改type的输出,则可以使用inLine Case语句。

SELECT  ....,
        CASE ps.`type`
           when 0 then 'Air'
           when 1 then 'Sea'
        END as `type`,
        ....
FROM    .... 

您可以将其放入查询中

select
CASE type 
      when '0' then 'Air'
      when '1' then 'Sea'
END as type 

尝试这个::

SELECT      ps.job_no, ps.booking_no,
            ps.type,ps.shipped_by, ps.invoice_no,
            ps.transporters_id,ps.clients_id,ps.return_terminal,
            ps.destinations_id,ps.forwarder_name,              
            containers.container_size,containers.container_no,
            containers.truck_no,
            ps.driver_cell_no,ps.shipping_line_name,
            containers.cro_no,vessels.vessel_name,vessels.eta,
            containers.empty_pickup_point,containers.loading_point,
            ps.particular ,
           CASE ps.type when '0' then 'Air'
when '1' then 'Sea'
END as type
  FROM      planning_sheet AS ps 
                LEFT JOIN vessels 
                    ON vessels.bookingno= ps.booking_no
                LEFT JOIN containers 
                    ON containers.bookingno = ps.booking_no

尝试这个..

SELECT      ps.job_no, ps.booking_no,
            CASE ps.type WHEN 0 THEN 'Air' WHEN 1 THEN 'Sea' ELSE 'None' END 
            as PLAN_TYPE,
            ps.shipped_by, ps.invoice_no,
            ps.transporters_id,ps.clients_id,ps.return_terminal,
            ps.destinations_id,ps.forwarder_name,              
            containers.container_size,containers.container_no,
            containers.truck_no,
            ps.driver_cell_no,ps.shipping_line_name,
            containers.cro_no,vessels.vessel_name,vessels.eta,
            containers.empty_pickup_point,containers.loading_point,
            ps.particular 
  FROM      planning_sheet AS ps 
                LEFT JOIN vessels 
                    ON vessels.bookingno= ps.booking_no
                LEFT JOIN containers 
                    ON containers.bookingno = ps.booking_no

根据ps.type数据类型使用

CASE ps.type WHEN 0 THEN 'Air' WHEN 1 THEN 'Sea' ELSE 'None' END

要么

CASE ps.type WHEN '0' THEN 'Air' WHEN '1' THEN 'Sea' ELSE 'None' END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM