把下面三段写在一个SQL语句里,实现一句SQL,6列显示

表格截图如下图片说明图片说明

SELECT 
    sku_p as aa,  
    COUNT(sku_p) as bb,
    amount as cc,
    SUM(amount) as dd
        '' as  leixing1,
        '' as  leixing2,
        '' as  leixing3,

FROM
tongji 
WHERE amount_description='Principal'
GROUP BY sku_p
HAVING COUNT(sku_p) >= 1;

SELECT 
    sku_p as aa,  
    COUNT(sku_p) as bb,
    amount as cc,
    SUM(amount) as dd,
                '' as  leixing1,
        '' as  leixing2,
        '' as  leixing3,

FROM
tongji 
WHERE amount_description='FBAPerUnitFulfillmentFee'
GROUP BY sku_p
HAVING COUNT(sku_p) >= 1;

SELECT 
    sku_p as aa,  
    COUNT(sku_p) as bb,
    amount as cc,
    SUM(amount) as dd,
                '' as  leixing1,
        '' as  leixing2,
        '' as  leixing3,

FROM
tongji 
WHERE amount_description='Commission'
GROUP BY sku_p
HAVING COUNT(sku_p) >= 1;

已经解决了
SELECT
sku_p as SKU,
fulfillment_id AS 配送方式,
COUNT(sku_p) as 销售数量,
amount as 销售单价,
SUM(case amount_description when 'Principal' then amount else 0 end) 销售金额,
SUM(case amount_description when 'Commission' then amount else 0 end) 销售佣金,
SUM(case amount_description when 'FBAPerUnitFulfillmentFee' then amount else 0 end) 销售尾程物流费,

SUM(case amount_description when 'Principal' then amount else 0 end)+SUM(case amount_description when 'FBAPerUnitFulfillmentFee' then amount else 0 end)

+SUM(case amount_description when 'Commission' then amount else 0 end) 结算销售金额
FROM
tongji

GROUP BY sku_p
HAVING COUNT(sku_p) >= 1;


SELECT
sku_p as aa,

COUNT(sku_p) as bb,
amount as cc,
SUM(amount) as dd
'' as leixing1,
'' as leixing2,
'' as leixing3,

FROM
tongji
WHERE amount_description='Principal' OR amount_description='Principal' OR amount_description='Commission'
GROUP BY sku_p
HAVING COUNT(sku_p) >= 1;

SELECT 
    sku_p as aa,  
    COUNT(sku_p) as bb,
    amount as cc,
    SUM(amount) as dd,
                '' as  leixing1,
        '' as  leixing2,
        '' as  leixing3,

FROM
tongji 
WHERE amount_description in ('Principal','Commission','FBAPerUnitFulfillmentFee') GROUP BY sku_p
HAVING COUNT(sku_p) >= 1;

楼上的也没问题

楼主的sql有点问题,你的select子句中已经按分组sum(amount) as dd了,为什么还要显示amount cc,你这样写在mysql是允许的,但是amount如果不是分组中唯一的,可能得到随机的值
回答你的问题:
1. 可以直接用union将3个sql连起来
sql1
union all
sql2
union all
sql3
2.
SELECT
sku_p as aa,

COUNT(sku_p) as bb,
amount as cc,
SUM(amount) as dd,
'' as leixing1,
'' as leixing2,
'' as leixing3
FROM
tongji
WHERE amount_description in ('Principal','Commission','FBAPerUnitFulfillmentFee') GROUP BY amount_description,sku_p
HAVING COUNT(sku_p) >= 1;