2011-02-03 33 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

その例から、私はなるだろう上:

0:

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を、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 
関連する問題