2010-11-29 16 views
0

私はテーブルtblsaleを持っています。
"s"と "r"(s = sale、r = returns)を含むBillTypeというフィールドがありますmysqlテーブル内の結合

テーブルには25レコードあります。そのうちの7つのレコードは「r」で、残りのレコードは「s」です。私はあなたが求めているのかわからないんだけど、多分

正確たくは何

Amount BillType Amount BillType Date 
100  s  50  r 29-11-2010 
120  s  20  r 28-11-2010 
130  s  30  r 27-11-2010 
140  s  50  r 26-11-2010 
+0

あなたの質問は不明です...あなたはデータから何をしたいですか?セールまたはリターンまたはその両方に関連する「セール」レコード、「返品」、合計「VAT」または「AfterDiscount」のみ – DRapp

+0

さて、返す*と思われるクエリは何ですか?あなたはテーブルを正確に記述していますが、データで何をしたいのかわかりません。 DBからそれらのすべてを取得するだけですか?それらをフィルタリング?どの基準で? – Piskvor

+1

@Piskvor:1つの列が「あなたのテーブルに正確に記述されています」というメッセージが表示されますか? –

答えて

1

あなたが望むものは、売り上げと返品の2つのクエリの結果です。

 select amount, sale, returnamount, returned, returndate 
     from 
     (
     select amount, 1 as sale, 0 as returnamount, 0 as returned, '' as returndate 
     from sales where billtype='s' 
     union 
     select 0 as amount, 0 as sale, amount as returnamount, 1 as returned, date as returndate 
     from sales where billtype ='r' 
     ) 

日付を文字列表現にする必要があるかもしれません。ユニオン・セットには同じ列構造が必要なため、ダミー列を作成します。 (販売のための販売日を尋ねなかった)

またはこれはCASE WHENステートメントで行うことができます。

0

を下回っている:私の結果セットには、次の列を含むように私は、クエリを書くにはどうすればよい

は、

SELECT BillNo, VAT, BillType, AfterDiscount FROM tblsale WHERE BillType = 's';