2014-09-21 5 views
1

Выполняю вспомогательный запрос для определения строк, которые я хочу получить исключить. Это те, которые имеют значения NULL в столбце b. Parent Supplier Name. Это отлично работает, пока я не попытаюсь получить сумму (b. Spend Value in LC) для остальных.LEFT JOIN и IS NULL работают, но не функция SUM.

SELECT a.`BW Parent Number` , a.`Vendor Name` , b.`Parent Supplier Name` , sum(b.`Spend Value in LC`) as sum 
FROM scrubs a 
LEFT JOIN (

    SELECT `Child Supplier ID` , `Parent Supplier Name` , `Spend Value in LC` 
    FROM pdwspend 
    WHERE `BU ID` = 'BU_1' 
    AND `version` LIKE '%FINAL%' 
)b ON a.`BW Parent Number` = b.`Child Supplier ID` 

WHERE a.`year` =2014 
AND b.`Parent Supplier Name` IS NULL 
GROUP BY a.`BW Parent Number` 
ORDER BY sum(b.`Spend Value in LC`) DESC 

В результате желание имеет такую ​​структуру:

`BW Parent Number` | `Vendor Name` | `Parent Supplier Name` | sum 
BW0001    XYC     NULL    300,000 
..... 
..... 

Сейчас я получаю это для всех строк, которые не включены в суб-запроса:

`BW Parent Number` | `Vendor Name` | `Parent Supplier Name` | sum 
BW0001    XYC     NULL    NULL 
.... 
.... 

Спасибо!

+0

Показать некоторые примеры данных. – Laurence

+0

Вы можете попробовать выполнить 'Sum (Coalesce (b. \' Провести значение в LC \ ', 0))' – Siyual

ответ

0

Как и многие другие до вас, вы пали жертвой нестандартным группирования поддержки MySQL, ...

Убедитесь, что все необобщенную столбцы перечислены в group by пункте:

... 
GROUP BY a.`BW Parent Number`, a.`Vendor Name` 
... 

В то время как другие базы данных будут использовать SQL-исключение, если вы попробуете ваш запрос, Mysql позволяет опускать неагрегированные столбцы, и в этом случае он возвращает один случайный ряд (в практическом отношении он возвращает firs t) для каждой уникальной группы в качестве кодированной.

+0

Спасибо за ответ. Я попробовал «GROUP BY a.'BW Parent Number», a.'Vendor Name'; а также ; '' GROUP BY a.'BW Parent Number', a.' Название поставщика', b.'Parent Название поставщика', b.'Child ID поставщика', без успеха. Я знаю, что эти строки имеют фактические значения на b.'Spend Value в LC'. Есть рекомендации? – nangys

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