-1

sqlite3 データベースに 2 つのテーブルがあります。誰かが以下のSQLコマンドで私を助けることができます:

tbltrans:

transid |  transdate | discountpercentage | Bank
12345     10/09/2011     5                  20.00

tbltrans2:

transid   |   itemnr   |price | btwpercentage | qty
12345         205        10.11        12        5
12345         302        15.00        6         7
12345         501        20.00        21        3

私の最初の質問は次のとおりです。

  1. 次のような、各トランザクションの合計売上高と計算された現金を含むクエリ テーブルを取得したいと考えています。

    Select
        Sum(tbltrans2.qty * tbltrans2.price) as TotalAmount,
        (Totalamount - tbltrans.Bank) as Cash
    where 
        tbltrans.transid = tbltrans2.transid 
        and transdate = '10/09/12'
    

    誰かこの SQL ステートメントを修正してもらえますか?

-- 以下の質問はすでに解決済みです --

だから、誰でもこのテーブルレイアウトで動作するように私のSQLコードを修正できますか:

select 
    sum(price * qty - (price * qty) * (tbltrans.discountpercentage / 100)  
from 
    tbltrans2 
where 
    btwpercentage = 6) as total6 ,
  sum(price * qty - (price*qty)*(tbltrans.discountpercentage /100) from tbltrans2 where btwpercentage =12) as total12,
sum(price * qty - (price*qty)*(tbltrans.discountpercentage /100) from tbltrans2 where btwpercentage =21) as total21
 where transdate = date('10/09/2011')
4

2 に答える 2

1

クエリを基本的に記述どおりに機能させたい場合は、次のfrom句を追加する必要があります。

Select 
sum(price * qty - (price*qty)*(tbltrans.discountpercentage /100) from tbltrans2 where btwpercentage =6) as total6 ,
 sum(price * qty - (price*qty)*(tbltrans.discountpercentage /100) from tbltrans2 where btwpercentage =12) as total12,
sum(price * qty - (price*qty)*(tbltrans.discountpercentage /100) from tbltrans2 where btwpercentage =21) as total21
from tbltrans
 where transdate = date('10/09/2011')

ただし、選択ロジックを次のように記述しますが、bluefeet はややクリーンなバージョンを提供します。

sum(case when t2."btwpercentage" =6
         then  t2."price"*t2."qty" * (1 - t1."discountpercentage" /100.0)
     end) Total6,
于 2012-12-13T17:40:59.657 に答える
1

テーブルを結合して、次のようなものを使用できるはずです。

select 
  sum(case when t2.btwpercentage =6 then
        t2.price * t2.qty - (t2.price * t2.qty* t1.discountpercentage /100) end) Total6,
  sum(case when t2.btwpercentage =12 then
        t2.price * t2.qty - (t2.price * t2.qty* t1.discountpercentage /100) end) Total12,
  sum(case when t2.btwpercentage =21 then
        t2.price * t2.qty - (t2.price * t2.qty* t1.discountpercentage /100) end) Total21
from tbltrans t1
left join tbltrans2 t2
  on t1.transid = t2.transid
where transdate = date('10/09/2011')

デモで SQL Fiddle を参照してください

コメントに基づいて、次のものも使用できます。

select count(t1.transid) Total,
  sum(case when t2.btwpercentage =6 then
        t2.price * t2.qty - (t2.price * t2.qty* t1.discountpercentage /100) end) Total6,
  sum(case when t2.btwpercentage =12 then
        t2.price * t2.qty - (t2.price * t2.qty* t1.discountpercentage /100) end) Total12,
  sum(case when t2.btwpercentage =21 then
        t2.price * t2.qty - (t2.price * t2.qty* t1.discountpercentage /100) end) Total21
from tbltrans t1
left join tbltrans2 t2
  on t1.transid = t2.transid
where transdate = date('10/09/2011')
于 2012-12-13T17:18:01.600 に答える