2014-07-16 2 views
1

Эй, ребята, я застрял с грязной структурой и требуют помощи в написании запроса, это мой текущий запросмногоярусных в одной строке MySQL

SQL:

SELECT `name` , trnid, `material` , SUM(quantity)qty , SUM(price) price, SUM(preturn) return 
FROM `transactions` a 
JOIN item_master b ON a.material = b.id 
GROUP BY material, trnid 
LIMIT 0 , 30 

ВЫВОД:

sql output

если вы видите выше, есть 2 запись для одного и того же материала (trnd 1 is purchase qty & trnd 2 is issue qty) Я хочу, чтобы это была одна запись со следующими столбцами.

название | материал | purqty | issqty

ответ

4

Я думаю, что вы хотите условную агрегацию:

SELECT name, material, 
     SUM(case when trnid = 1 then quantity else 0 end) as purchaseqty, 
     SUM(case when trnid = 2 then quantity else 0 end) as issueqty 
FROM transactions t JOIN 
    item_master im 
    ON t.material = im.id 
GROUP BY name, material 
LIMIT 0 , 30; 
+0

совершенна и принял только одно было я просто необходимо сгруппировать по материалу и удалить имя, чтобы получить правильный результат, согласно моей структуре. благодаря :) –

Смежные вопросы