0 голосов
спросил от в категории SQL
Надеюсь, я не буду делать домашнее задание для вас ...

Есть две вещи, которые делают это немного сложнее, сначала вы должны создать промежуточный запрос, который суммирует авансы и соединяется с основной таблицей. Вторая сложность заключается в том, что вы должны убедиться, что все имена представлены во временном запросе, поэтому они не будут исключены соединением. Это означает учет NULLS и замену с помощью значения ZERO.

drop table #tempadvance CREATE TABLE #tempSaldetail( [ID] [int] NOT NULL, [ENAME] [varchar](32) NOT NULL, [SAL] [INT] NOT NULL )  CREATE TABLE #tempAdvance( [ID] [int] NOT NULL, [ADVANCE] [int] NOT NULL ) GO insert into #tempSaldetail select 1, 'ANU', 10000 insert into #tempSaldetail select 2, 'APARNA', 20000 insert into #tempSaldetail select 3, 'ANANYA', 15000 insert into #tempSaldetail select 4, 'ANUPAMA', 40000 insert into #tempSaldetail select 5, 'AMRUTHA', 20000 INSERT INTO #tempAdvance SELECT 1, 1000 INSERT INTO #tempAdvance SELECT 2, 500 INSERT INTO #tempAdvance SELECT 5, 200 INSERT INTO #tempAdvance SELECT 1, 2000 INSERT INTO #tempAdvance SELECT 2, 200 SELECT s.ID, ENAME, s.Sal - (adv.totalAdvance) from #tempSaldetail s join (select sal.id, ISNULL(sum(advance),0) as totaladvance from  #tempSaldetail sal   left outer join #tempAdvance A on  sal.id = a.id group by sal.id) as adv on adv.id = s.id

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

Категории

Добро пожаловать на сайт DraftingCode Q&A, где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...