2011-01-13 15 views
0

Я собираюсь создать запрос из этих двух таблиц (на SQL Server 2008). У меня есть 2 таблицы, как показано ниже:Как я могу построить свой SQL-запрос из этих таблиц?

Таблица 1

MemberId . MemberName . Percentage . Amount1 
00000001 AAA     1.0  100 
00000002 BBB     1.2  800 
00000003 ZZZ     1.0  700 

Таблица 2

MemberId . MemberName . Percentage . Amount2 
00000002 BBB     1.5  500 
00000002 BBB     1.6  100 
00000002 BBB     1.6  150 

В результате я хочу

MemberId . MemberName . Percentage . Amount . NettAmount 
00000001 AAA     1.0  100  100 
00000002 BBB     1.2  800  50 <-- 800-(500+100+150) 
00000002 BBB     1.5  500  500 
00000002 BBB     1.6  250  250 
00000003 ZZZ     1.0  700  700 

50 поставляется с 800 в Table1 минус сумма от суммы2 в таблице2 для MemberID = 00000002

Plz кто-то поможет мне построить запрос, чтобы достичь этого результата.

Заранее спасибо.

+4

Почему вычитание применяется только к «ВВВ, 1,2», а не к другим «ВВВ» процентам? –

+0

Я согласен с Мартином ... MemberId будет использоваться как КЛЮЧ. –

+0

Я бы ожидал «500» от строки «1.5». '0' от строки' 1,2' и '250' от строки' 1.6'. Это приемлемый результат? Кроме того, это не выглядит нормализованным. Имя члена должно, вероятно, находиться в таблице участников и какова связь между процентами в двух таблицах? Если 'memberid, percent' находится в' tableB', всегда должно быть соответствующее в 'tableA'? –

ответ

2

Что вам нужно сделать, это что-то вроде этого:

  1. Выбрать из Table1
  2. Делают GROUP BY выбрать из Table2
  3. Регистрация результаты этих двух запросов по MemberId

Код SQL:

SELECT ... FROM Table1 
INNER JOIN (SELECT MemberId, SUM(Amount2) FROM Table2 GROUP BY MemberId) Agg 
ON Table1.MemberId = Agg.MemberId 

Затем вы сможете выбрать «Сумма 1 - Сумма 2» из соединения.

HTH.

+0

Если вы отправляете код, XML или образцы данных, ** пожалуйста ** выделите эти строки в текстовом редакторе и нажмите кнопку «образцы кода» ({}) на панели инструментов редактора, чтобы красиво отформатировать и выделить синтаксис! –

+3

+1 Хотя вы, вероятно, будете использовать «внешнее соединение», а «Amount1 - IsNull (Amount2,0)» – Andomar

+0

хорошо, ребята! Я получил решение. У меня появилась идея от Джона и Андомара. Всем спасибо. – tong

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