2015-07-23 6 views
1

Мне нужна помощь с проблемой SQL. Я не уверен, что это можно сделать, но у меня есть эта таблица: enter image description hereДанные сортировки SQL на основе разных столбцов

Получаемые из этого SQL заявления:

SELECT distinct Account.Box, Account.Name, Account.Currency, Account.LastUpdated, Account.LastUpdatedBy, Transactions.Totals 
FROM Account 
LEFT JOIN Transactions 
ON Account.AccountGUID = Transactions.AccountGUID 

Что я хотел бы закончить с этим результатом: enter image description here

Таким образом, в основном сравнение итогов для каждой группы имен или валюты для получения наивысших итогов для каждой группы. (Значения NULL должны быть заменены нулями).

+0

Вам нужно сравнить итоги для разных периодов обновления? – Simon

ответ

0

Вы, кажется, просто хочу group by:

SELECT a.Box, a.Name, a.Currency, a.LastUpdated, a.LastUpdatedBy, 
     MAX(t.Totals) as Totals 
FROM Account a LEFT JOIN 
    Transactions t 
    ON a.AccountGUID = t.AccountGUID 
GROUP BY a.Box, a.Name, a.Currency, a.LastUpdated, a.LastUpdatedBy; 

Примечание: Я также добавил псевдонимы таблиц, чтобы облегчить запрос, чтобы понять.

+3

Я не вижу предложения GROUP BY в вашем заявлении – Martin

+0

@Martin. , , Это будет явным надзором, учитывая этот комментарий. Он исправлен. –

+0

Это сделало. Большое спасибо! – user2386092

0

Попробуйте следующее: надейтесь, что вы получите результат, которого вы ожидаете.

select * from 
(SELECT distinct Account.Box, Account.Name, Account.Currency, Account.LastUpdated, Account.LastUpdatedBy, Transactions.Totals as Totals 
FROM Account 
LEFT JOIN Transactions 
ON Account.AccountGUID = Transactions.AccountGUID) as p 
where p.Totals = (select max(totals) from transactions) 


group by Box, Name, Currency, LastUpdated, LastUpdatedBy ; 

(или)

использовать следующий один также

SELECT a.Box, a.Name, a.Currency, a.LastUpdated, a.LastUpdatedBy, 
     MAX(t.Totals) as Totals 
FROM Account a LEFT JOIN 
    Transactions t 
    ON a.AccountGUID = t.AccountGUID 
GROUP BY a.Box, a.Name, a.Currency, a.LastUpdated, a.LastUpdatedBy; 

Спасибо.

+0

для второго блока, вы только что скопировали ответ Гордона? Можете ли вы объяснить, что происходит в первом запросе? Также попробуйте и отформатируйте свой код в текстовом редакторе, чтобы блоки кода отображались как кодовые блоки, а не текст :). – Martin

+0

внутренний запрос дает все полные записи, для этого набора результатов применяя условие where, когда сумма имеет максимум с группой по функция. – Phani

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