まず、新しい出力フィールドを作成
図1に示すように、テーブルの構築、挿入データ
### CREATE TABLE `t_stock_trans_dtl`( ` trans_id` VARCHAR( 100)NOT NULL COMMENT 'トランザクションのシリアル番号' 、 `stock_name` VARCHAR( 20)NOT NULL DEFAULT '' COMMENT '共有名' 、 ` stock_code` VARCHAR( 10) NOT NULL DEFAULT '' COMMENT 'ティッカー' 、 `opt_tm`日時NOT NULL DEFAULT '1900-01-01 00:00:00' COMMENT '時間を操作する' 、 ` opt_typ` VARCHAR( 10)NOT NULL DEFAULT '' COMMENT "操作タイプ' `price`進( 18,2)NOT NULL DEFAULT' 0.00 'COMMENT'一価' ` volume`のint型(11)NOT NULL DEFAULT' 0 'COMMENT'番号」、 `fee`小数(18,5)NOT NULL DEFAULT '0.00000' COMMENT ' 手数料' 、 PRIMARY KEY( `trans_id`) )ENGINE = MyISAMテーブルDEFAULT CHARSET = GBK COMMENT = '株式取引の詳細; ### INSERT VALUES t_stock_trans_dtl` INTO` ( ' 20,010,406,000,023 '' Hongdu航空'' sh600316 '' 2001-04-06 10時42分34秒'' 買う'22.40,600,3.36000 )、( '20050826000303'、' Hongdu航空'' sh600316 '' 2005-08-26夜一時40分31秒' ' 販売'、6.98、-300,5.00000 )、 ( '20130301000933'、' BYD '' sz002594 '' 2013年3月1日 09: 33:36 ''買う'25.25,600,3.78750 )、 ( '20140307000393'、' BYD '' sz002594 '' 2014年3月7日 13:39:30 ''購入」、56.91,600,8.53650 )、 ('20150508000075'、 'Hongdu航空'、 'sh600316'、 '2015年5月8日午前10時47分54秒'、 ' 販売'、36.66、-300,2.74950 )、 ( '20150724000395'、 'BYD' ' sz002594 '' 2015年7月24日13時19分55秒' ' 買う'、55.55,1200,16.66500 )、 ( '20150902000941'、'ゆう水'' sz300021 '' 2015年9月2日9時44分18秒''購入'11.41,6100,17.40025 )、 ( '20160318000314'、'ゆう水'' sz300021 '' 2016年3月18日午後01時01分44秒'' 販売'12 0.62、-3000,9.46500 )、 ( '20160930000303'、 'BYD'、 'sz002594'、 '2016年9月30日午後01時40分31秒'、 ' 販売'、56.98、-2400,34.18800 )、 ( '20170310000425'、 'BYD'、 'sz002594'、'2017年3月10日午後二時22分54秒'、 '購入'、51.59,2000,25.79500 )、 ( '20170630000132'、 'ゆう水'、 'sz300021を'、「2017年6月30日 11時53分:20 ''、「7.87,1300,2.55775を買います)、 ('20171110000142'、 'ゆう水'、 'sz300021'、 '2017年11月10日午前11時44分24秒'、 ' 購入'、7.25,5000,9.06250 )、 ( '20171229000410'、 'BYD' ' sz002594 '' 2017年12月29日午後2時51分04秒」、 ' )' 61.88,3600,55.69200を購入。
図2に示すように、数値計算
たとえば、次の 手(1ロット変換する方法共有データベースのユニット数、 = 出力した後に100株)? TRANS_ID SELECT、stock_name ,.価格、ボリューム、ボリューム / 100 t_stock_trans_dtl FROM; 株式取引テーブルの単価、数量は、取引の額を計算する方法? TRANS_ID SELECT、stock_name ,.価格、ボリューム,.価格 *のボリュームt_stock_trans_dtl FROM、 SQL算術演算子: + 加算 - 減算 * 乗算 / 加算 演算の演算子の優先順位: 及び演算に記載の SELECT A -b * C / Dの1 +それSELECTと等価である- +1((b *表 C)/ D) ラップされた()を提案 算術演算子の結果を: フィールド(INT) = 1件の。 フィールドB(INT) = 4。 SELECT A/ B#が0.2500を返し、特定のデータベースにも0を返し、 0を返すどのように 25を? SELECT * 1.00 / B 算術演算子は、数値フィールドをサポートし、 どのように文字フィールドの算術演算? 変換数字、再計算
3、フィールドスプライシング
例: どのように「Hongdu航空(sh600316)」をマスコミに名前と株式ティッカーシンボルを示して? アクセス、SQL Serverで: SELECT stock_name + '(' + stock_code + ')' t_stock_trans_dtl FROM; のTeradataでDB2やOracle、: SELECT stock_name || '(' || || stock_code ')' t_stock_trans_dtl FROM; MySQLで: SELECT CONCAT(stock_name、 '('、stock_code、 ')' )t_stock_trans_dtl FROM; スプライシングオペレータが唯一の文字フィールドをサポートしています。 どのようにスプライシング数値フィールド? 数字に変換され、その後、スプライシング
エイリアスを使用して4、
CONCAT SELECT(stock_name、「(」、stock_code、「)」)t_stock_trans_dtl FROM; 別名があるかもしれませんただ、スプライシングフィールドをチェックし、ヘッダ名は、読みやすいではありません。 ASキーワード表現エイリアスを使用: SELECT CONCAT(stock_name、 '('、stock_code、 ')' t_stock_trans_dtl FROM証券AS); SELECT CONCAT(stock_name、 '('、stock_code、 ')') '株式名とコード' AS t_stock_trans_dtl FROM; 提案:かどうか、中国の別名スペースがあるが、引用符で囲まれています
第二に、新しい出力フィールド(ケース)を作成
図1に示すように、ケース場合
例: どのように数が多く、単一の、単一、小型のシングルを区別するために、購入しますか? [ 3000、+ ∞)は、単一の大型 ( 300,3000 単一) ( 0300 】スタジオ SELECT巻、 CASE巻 > = 3000 THEN '大きなもの' ボリューム >ボリューム300 AND <3000は、次に'単' ボリューム <= 300 THEN「メーカー」 AS END「のシングルタイプ」 t_stock_trans_dtl FROM WHERE opt_typ =「買う」; ##他のキーワード SELECTボリューム、 CASEを巻 > = 3000 THEN「大きなもの」 ボリューム > 300ボリューム<3000 THEN "'小シングル' END t_stock_trans_dtl FROM WHERE opt_typ = '購入';
2、CASE WHEN構文1
### CASE WHEN構文1: THEN CASE式1 WHEN発現を生じた条件1。 2は、条件式N Nの発現の結果THEN条件式2の発現...結果WHEN [ELSEは、ELSE式結果] END ないELSEをすべての条件式が満たされない場合は、部分的な、それはNULLを返します。 それぞれのCASE ELSE分岐を有していなければなりません!!! 例: 購買取引について、取引の数が正の数であり、取引を販売し、トランザクションの数は負です。これは、取引金額(取引価格につながる *のトランザクションの数)正と負の両方の値を返します。 どのように取引の種類に応じた変換は、すべての取引金額は正の数を返すのですか? 取引価格で購入 *のトランザクションの数 販売 0-取引価格* トランザクションの数 SELECT opt_typ ,.価格、ボリューム、 CASE opt_typ = '買い'を。価格* ボリュームを WHEN opt_typ = '売り' THEN-0。価格* ボリューム ELSE 0を END t_stock_trans_dtl FROM。 ##另一种写法 opt_typ SELECT、価格、数量、 CASE opt_typ '买入' THEN価格* ボリューム '卖出' THEN 0-価格* ボリューム ELSE 0 END t_stock_trans_dtl FROM。
3、CASE WHEN構文2
### CASE WHEN構文2:
CASE条件式
。式の結果が一致式1 THEN
2が一致発現式2をもたらす
...
THEN式一致式N Nを得WHEN
[式ELSE ELSE結果式]
ENDの
結果が条件式に適用され、それは網羅的なリストです。
しかし、ない条件式の結果のために状況の範囲です。
図4に示すように、ネストされたCASE
CASE WHEN THEN外側の条件式1(CASE WHEN THEN条件式1式の結果の内層の内層。1
...
インナーインナー条件式の結果式M M THEN
得ELSE ELSE内発現
END )
...
条件式外層得られた発現N N THEN
ELSE ELSE外側発現結果
END
構文の2種類のネスト、ネストが、推奨しないことができます。
我々は2つのネストされた括弧形式までをお勧めしますし、SQL文を使用します。