2017-08-07 50 views
-1

我有以下的sql语句,它的工作很好,在一定程度上,如果可能的话,希望使它更好,并且总计得到所有在最后一行的选择。我也尝试在一个语句中创建WHERE,但无法返回我在下面完成的命令。MariaDB中的多重选择语句MySQL

感谢&问候

SELECT 
    coalesce(account, ' ') AS Account, 
    sum(gl.credit - gl.debit) AS Balances 
    FROM `tabGL Entry` AS gl 
    WHERE account LIKE 'INC%' 
    GROUP BY account WITH ROLLUP 
UNION ALL 
SELECT 
    coalesce(account, ' ') AS Account, 
    sum(gl.debit - gl.credit) AS Balances 
    FROM `tabGL Entry` AS gl 
    WHERE account LIKE 'DCOI%' 
    GROUP BY account WITH ROLLUP 
UNION ALL 
SELECT 
    coalesce(account, ' ') AS Account, 
    sum(gl.debit - gl.credit) AS Balances 
    FROM `tabGL Entry` AS gl 
    WHERE account LIKE 'DMC%' 
    GROUP BY account WITH ROLLUP 
UNION ALL 
SELECT 
    coalesce(account, ' ') AS Account, 
    sum(gl.debit - gl.credit) AS Balances 
    FROM `tabGL Entry` AS gl 
    WHERE account LIKE 'INFC%' 
    GROUP BY account WITH ROLLUP 
UNION ALL 
SELECT 
    coalesce(account, ' ') AS Account, 
    sum(gl.debit - gl.credit) AS Balances 
    FROM `tabGL Entry` AS gl 
    WHERE account LIKE 'IDEX%' 
    GROUP BY account WITH ROLLUP 

为了澄清结果所需

Inc item 1 ---- 100 
Inc item 2 ---- 100 
Inc Total ---- 200 
DCOI item 1 ---- 100 
DCOI item 2 ---- 100 
DCOI Total ---- 200 
DMC item 1 ---- 100 
DMC item 21 ---- 100 
DMC Total ---- 200 
Total Inc-(DCOI+DMC+INFC+IDEX) 
+0

尝试重新组织数据,以便您可以使用'='而不是'LIKE' – Strawberry

+0

'按账号LIKE'INC%'排序ñ1时......当帐户LIKE'IDEX%'然后5结束' – jarlh

回答

-1

您可以使用或与多个像运营商

SELECT 
     coalesce(account, ' ') AS Account, 
     sum(gl.credit - gl.debit) AS Balances 
     FROM `tabGL Entry` AS gl 
     WHERE 
     account LIKE 'INC%' 
     OR LIKE 'DCOI%' 
     OR account LIKE 'DCOI%' 
     OR account LIKE 'DMC%' 
     OR account LIKE 'INFC%' 
     OR account LIKE 'IDEX%' 
     GROUP BY account WITH ROLLUP 
+0

感谢您的答案,我其实也尝试过,当我得到的结果它不是我需要它的顺序。 – Said

+0

https://stackoverflow.com/questions/3609166/mysql-order-by-like-like这个答案可能有帮助 –

+0

如果这是行得通的,那就需要多一点思考 – Strawberry