ahsal Ответов: 2

Использовать функцию sum в запросе 2 таблицы 2 баз данных


hello,

below is my query, the query result is 2 columns from 2 different databases 
the columns "OriginalPremium" & "Share"

Share is always static in EACH query run but in some queries are 50 some are 60..etc
the question: how to get the SUM of the "OriginalPremium" in my Query result ??


SELECT OriginalPremium, Users.Share
FROM [URSYSTEM].[PolicyTable] a inner join [LoginDB].[ahsal-UR].Users on Producer = LoginDB.[ahsal-UR].Users.Username


Now my output is:
--------------------------
|OriginalPremium | Share |
--------------------------
|      10        |  50   |
--------------------------
|      5         |  50   |
--------------------------
|      15        |  50   |
--------------------------




what i want is:
--------------------------
|OriginalPremium | Share |
       30        |  50   |
--------------------------

 

by the way i used Sum(OriginalPremium) as Total

it shows me this error:

Msg 8120, Level 16, State 1, Line 3
Column 'LoginDB.ahsal-UR.Users.Share' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.


Что я уже пробовал:

by the way i used Sum(OriginalPremium) as Total

it shows me this error:

Msg 8120, Level 16, State 1, Line 3
Column 'LoginDB.ahsal-UR.Users.Share' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

2 Ответов

Рейтинг:
2

OriginalGriff

Вы не можете агрегировать значения с помощью GROUP BY и включать неагрегированные значения, если они специально не включены в группу BY: SQL GROUP By и ошибка "имя столбца недопустимо в списке выбора, потому что..." [^]

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

SELECT a.ID, a.Total, b.SalesManName FROM (SELECT ID, SUM(MyColumn) AS Total FROM MyTable GROUP BY ID) a
JOIN myOtherTable b ON a.ID = b.MyTableID


ahsal

На самом деле я решил его классическим способом (результат)/2

Рейтинг:
1

Rahul JR

Select SUM( myTable1.ColumnName ) as ColumnName,myTable1.ID
From myTable1
INNER JOIN myTable2
on myTable1.ID = myTable2.ID
Group by myTable1.ID


ahsal

На самом деле я решил его классическим способом (результат)/2