2011-02-03 6 views
1

У меня есть эта таблица:Нужна помощь проектирования надлежащей SQL запрос

DebitDate | DebitTypeID | DebitPrice | DebitQuantity 
---------------------------------------------------- 
40577  1    50   3 
40577  1    100   1 
40577  2    75   2 
40578  1    50   2 
40578  2    150   2 

Я хотел бы получить с помощью одного запроса (если это возможно), эти данные: дата, debit_id, total_sum_of_same_debit, how_many_debits_per_day

так из приведенного выше примера я хотел бы получить:

40577, 1, (50*3)+(100*1), 2 (because 40577 has 1 and 2 so total of 2 debits per this day) 
40577, 2, (75*2), 2 (because 40577 has 1 and 2 so total of 2 debits per this day) 
40578, 1, (50*2), 2 (because 40578 has 1 and 2 so total of 2 debits per this day) 
40578, 2, (150*2), 2 (because 40578 has 1 and 2 so total of 2 debits per this day) 

так у меня есть этот SQL-запрос:

SELECT  DebitDate, DebitTypeID, SUM(DebitPrice*DebitQuantity) AS TotalSum 
FROM  DebitsList 
GROUP BY DebitDate, DebitTypeID, DebitPrice, DebitQuantity 

А теперь у меня проблемы, и я не уверен, где поставить счет на последнюю информацию, в которой я нуждаюсь.

+0

В соответствии с тем, что вы хотите, чтобы записи были группами? - Я имею в виду, что вам нужно сгруппировать записи с помощью Debitdate или DebitTypeID. Вы не можете поместить их обоих. –

ответ

1

Вам понадобится коррелированный подзапрос, чтобы получить этот новый столбец. Вам также необходимо установить DebitPrice и DebitQuantity из предложения GROUP BY, чтобы он работал.

SELECT DebitDate, 
     DebitTypeID, 
     SUM(DebitPrice*DebitQuantity) AS TotalSum, 
     ( select Count(distinct E.DebitTypeID) 
      from DebitsList E 
      where E.DebitDate=D.DebitDate) as CountDebits 
FROM  DebitsList D 
GROUP BY DebitDate, DebitTypeID 
+0

Я уже пробовал это, но для первой строки 40577 это дает мне 2, а для второй линии 40577 это дает мне 1. – Shay

+0

спасибо, но я все равно получаю тот же результат :( – Shay

+0

@Shay - Я получаю то, что вы говоря, см. новый подзапрос – RichardTheKiwi

0

Я думаю, это может вам помочь.

SELECT  DebitDate, SUM(DebitPrice*DebitQuantity) AS TotalSum, Count(DebitDate) as DebitDateCount 
FROM  DebitsList where DebitTypeID = 1 
GROUP BY DebitDate 
Смежные вопросы