2016-03-10 6 views
0

Ниже я могу получить результат sub_shares, но я не знаю, как получить сумму результата (sub_shares), используя результат sub_shares для кода ниже:sql: как получить сумму сумм

Как это сделать?

SELECT * , 
 
Client.client_chi_name, 
 
Client.client_eng_name, 
 
SUM(shares_no) AS sub_shares 
 
FROM Shareholder 
 
LEFT OUTER JOIN Client ON Shareholder.client_id = Client.client_id 
 
WHERE Shareholder.com_no = 2040628 
 
GROUP BY Shareholder.client_id 
 
ORDER BY SUM(shares_no) DESC, 
 
Shareholder.date_of_register DESC

Таблица Акционер

  • com_no
  • date_of_register
  • share_type
  • class_shares
  • client_id
  • shares_no
  • transferee_id
  • валюта
  • shares_amount

Большое спасибо за вашу поддержку помощь &.

+1

Для справки, это определенная СУБД, на которую вы ищете ответ или просто общий путь SQL? –

+0

В какую базу данных вы ссылаетесь, например, sqlserver, oracle, mysql и т. Д.? – Ajay2707

ответ

0
SELECT * , 
    Client.client_chi_name, 
    Client.client_eng_name, 
    SUM(shares_no) AS sub_shares, 
    (select sum(shares_no) FROM Shareholder 
     LEFT OUTER JOIN Client ON Shareholder.client_id = Client.client_id 
     WHERE Shareholder.com_no = 2040628) as sum_of_sum 
FROM Shareholder 
LEFT OUTER JOIN Client ON Shareholder.client_id = Client.client_id 
WHERE Shareholder.com_no = 2040628 
GROUP BY Shareholder.client_id 
ORDER BY SUM(shares_no) DESC, 
Shareholder.date_of_register DESC 

Вы можете добавить еще одну колонку с подвыборки

+0

Большое спасибо за вашу быструю помощь! –

0

вы можете использовать ниже код в соответствии с вашими потребностями,

либо

GROUP BY Shareholder.client_id WITH ROLLUP 

или

GROUP BY Shareholder.client_id WITH CUBE 

Для d Etail понимание, пожалуйста, обратитесь technet

+0

Извините, я не знаю, как его переписать, вы можете помочь? –

0

вы можете использовать CTE (Коммон Таблица Expression) для выполнения той же задачи

with cte as 
(
SELECT * , 
Client.client_chi_name, 
Client.client_eng_name, 
SUM(shares_no) AS sub_shares 
FROM Shareholder 
LEFT OUTER JOIN Client ON Shareholder.client_id = Client.client_id 
WHERE Shareholder.com_no = 2040628 
GROUP BY Shareholder.client_id 
ORDER BY shares_no DESC, 
Shareholder.date_of_register DESC 
) 

select cte.client_chi_name,cte.client_eng_name,SUM(cte.sub_shares) sub_shares from cte --you can access more column which is present in * 
GROUP BY client_chi_name,client_eng_name --place extra column yor are accessing 
0

Вы можете удалить свой GROUP BY и выполните следующие действия:

SUM(shares_no) OVER (PARTITION BY Client.client_id) AS sub_shares 
SUM(shares_no) AS total_shares, 

You 'd также нужно начинать с SELECT DISTINCT или вы получите дубликаты.

+0

Извините, я не знаю, как его переписать, можете ли вы помочь? –

+0

Ваш запрос остается таким же, за исключением того, что 1) первая строка должна сказать SELECT DISTINCT 2) заменить вашу строку, которая начинается с SUM с моим кодом выше, и 3) удалить вашу строку, которая начинается с GROUP BY –

+0

Извините, я не знаю как переписать его? –

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