2017-05-19 3 views
1

の隣に私はこれは私が今取得していた結果である を説明するのは難しいです別の質問があります。次の(SQL結果互いに

╔═════════╦════════╗ 
║ Id ║ Saldo ║ 
╠═════════╬════════╣ 
║ 1 ║10441,91║ 
╠═════════╬════════╣ 
║ 2 ║ 441,91 ║ 
╚═════════╩════════╝ 

そして、これは私が結果として何をしたいですお互いに):

╔═════════╦════════╗════════╗════════╗ 
║ Id ║ Saldo ║ Id ║ Saldo ║ 
╠═════════╬════════╣════════║════════║ 
║ 1  ║10441,91║ 2 ║ 441,91 ║ 
╚═════════╩════════╝════════╝════════╝ 

私はお互いに隣り合わせです。

そして、これは私が使用したクエリです:

SELECT 
    o.id_shop AS id, 
    SUM(CASE 
     WHEN (s.amount + s.shipping_cost_amount) != '' THEN o.total_paid_tax_excl - (s.amount + s.shipping_cost_amount) 
     ELSE o.total_paid_tax_excl 
    END) AS Shop 
FROM 
    expoled.ps_orders o 
     LEFT JOIN 
    expoled.ps_oxoquotation_quotation q ON q.idOrder = o.id_order 
     LEFT JOIN 
    expoled.ps_order_slip s ON s.id_order = o.id_order 
WHERE 
    o.current_state IN (4 , 5, 20, 23) 
     AND YEAR(q.date_add) = YEAR(UTC_TIMESTAMP()) 
GROUP BY o.id_shop 

は私が何をしようとしました: 私は結果セットを結合するUNIONを試してみましたが、それは動作しませんでした。 私はお互いの下にそれらを得ることができますが、お互いの隣にはありません。

+0

ID値4,7,13の行をデータに追加して結果を調整します。 – jarlh

+0

他のほとんどの言語はSQLよりも優れています。 –

+0

IDとSaldoは、そのテーブルにある唯一の列ですか? IDは一意ですか?なぜ結果が単一の行にのみ返されるようにしたいのですか?そのクエリの結果をどのように処理するかによって、結果としてコンマ区切りのリストを返す方が良いでしょう。(他のシステム、Excelなどにロードする場合など) – daZza

答えて

1

IDは1と2の2つしかありませんか?その場合は、GROUP BY o.id_shopを削除して、次のように2つの合計列を作成できます。

SUM(CASE 
    WHEN (s.amount + s.shipping_cost_amount) != '' AND o.id_shop = 1 THEN o.total_paid_tax_excl - (s.amount + s.shipping_cost_amount) 
    WHEN (s.amount + s.shipping_cost_amount) = '' AND o.id_shop = 1 THEN o.total_paid_tax_excl 
    ELSE 0 
END) AS Shop_ID_1 


SUM(CASE 
    WHEN (s.amount + s.shipping_cost_amount) != '' AND o.id_shop = 2 THEN o.total_paid_tax_excl - (s.amount + s.shipping_cost_amount) 
    WHEN (s.amount + s.shipping_cost_amount) = '' AND o.id_shop = 2 THEN o.total_paid_tax_excl 
    ELSE 0 
END) AS Shop_ID_2