Member 13723018 Ответов: 2

Как написать запрос select между двумя таблицами с помощью метода sum и условия where


У меня есть две таблицы имена и данные в этих таблицах приведены ниже

Loans_Advances_Master:
Dept_id     emp_Id   loan_approved_amt    loan_adv_no
------------------------------------------------------
De_1        emp_1     10000                LA_1
de_1        emp_1     10000                LA_2


loans_deduction_details:
dept_Id   EMp_Id    Loan_deduction_amt  Loan_adv_no
-------------------------------------------------
de_1       emp_1       5000                LA_1
de_1       emp_1       5000                LA_1
de_1       Emp_1       5000                LA_2


как написать select query для вышеуказанных двух таблиц для отложенного laon i.e
loan_approved_amt для loan_adv_no является LA_1 равна сумме(loan_deduction_amt) от loans_deduction_details форма тогда Loan_adv_no показывают 0 другие мудрые показывают, суммы требуемой суммы он должен платить..


Как получить такой вывод для EMp_1
de_1  emp_1    0
de_1   emp_1   5000

де

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

select Dept_id, Emp_id, Loan_Adv_No,((select loan_adv_no,sum(Loan_Approved_Amont) from [dt_agrovet].[dbo].[Loans_Advances_Master]  group by Loan_Adv_No)- (select sum(loan_deduction_amount) from loans_deduction_details  group by emp_id,Loan_Adv_No) ) as loanamount  from [dt_agrovet].[dbo].[Loans_Advances_Master]   where emp_Id='emp_1'



пожалуйста, кто-нибудь может дать мне решение для этого ...
Спасибо...

2 Ответов

Рейтинг:
2

GKP1992

Я внес некоторые изменения в структуру таблицы, чтобы сделать запрос более чистым. Я удалил столбцы "emp_id", "dept_id" и "loan_adv_no" из таблицы "loans_deduction_details" и добавил столбец для хранения идентификатора хорошей строки "Loans_Advances_Master" в качестве внешнего ключа.

Вот как выглядит моя скрипка.

create table LAM (id int, depId varchar(20), empId varchar(20), loanId varchar(20), loanAmt int);
create table LDD(id int, lamId int, loadDAmt int);

insert into LAM values (1,'De_1','emp_1', 'LA_1', 10000), (2,'De_1','emp_1', 'LA_2', 10000);
insert into LDD values (1,1,5000),(2,1,5000),(3,2,5000);


Теперь, когда таблицы инициализированы, мне просто нужно запросить их.
select temp.depID, temp.empID, temp.loanId, temp.loadAmt
  from (
    select 
    LAM.depID as depID, 
    LAM.empID as empID, 
    LAM.loanId as loanId, 
    LAM.loanAmt - SUM(LDD.loadDAmt) AS loadAmt 
    FROM LDD 
    INNER JOIN LAM ON LDD.lamId = LAM.Id
    GROUP BY LDD.lamId
  ) temp;


Вы также можете проверить скрипку здесь[^].


Maciej Los

Было бы здорово, если бы вы разместили свое решение здесь и ссылку на sql fiddle (а не просто ссылку на fiddle).

GKP1992

Ладно, мне просто было лень это делать, а еще я немного изменил структуру, чтобы сделать запрос чище. Например, я только что добавил отношение внешнего ключа между таблицами и удалил повторяющиеся столбцы.

Santosh kumar Pithani

плз заменить "ЛДД.lamId = лам.Идентификатор" вместо "ЛДД.Loan_adv_no=лам.loan_adv_no и LDD.Идентификатор emp_id=лам.Идентификатор emp_id"

GKP1992

Прочитайте первый абзац решения. Я удалил эти колонки, чтобы избежать этого.

Рейтинг:
0

Santosh kumar Pithani

SELECT LAM.Dept_id
      ,LAM.emp_Id
      ,(LAM.loan_adv_no-(
	         SELECT SUM(LDD.Loan_deduction_amt)
	           FROM  loans_deduction_details AS LDD
			    WHERE LDD.Loan_adv_no=LAM.loan_adv_no AND LDD.Emp_Id=LAM.Emp_Id)
				    ) AS BalanceAmount
  FROM Loans_Advances_Master AS LAM