レコードの特定の他の値がtrueの場合は、2つの値/列のうち大きい方を使用するクエリが必要です。2つの列を比較する大文字小文字を選択する
私は報告書口座の保有を取得しようとしています。残念ながら、DBは通常、HoldingQty
という列にCashの値を格納し、その他の種類の保有(株式、債券、ミューチュアルファンド)の場合はQty
という列に格納します。
現金の値がQty
にのみ格納されることがあり、時にはQty
とHoldingQty
の両方にあることがあるという問題があります。明らかに、時にはそれは上記のようにHoldingQty
にのみ格納されます。
基本的には、「セキュリティが現金であれば、数量と保有数量を見て、それよりも大きいものを私に与えてください」と言いたいのですが、セキュリティが現金でない場合は、 。
T-SQLではどのように記述しますか?ここに私の努力です:
SELECT
h.account_name, h.security_name, h.security_type, h.price,
(CASE:
WHEN security_type = 'cash'
THEN (WHEN h.qty > h.holdingqty
THEN h.qty
ELSE h.holdingqty)
ELSE qty) as quantity,
h.total_value
FROM
holdings h
WHERE
...........
あなたは構文を除いて、ほとんどがあります。 –
複合型ケースステートメント 'caseの場合は、security_Type = 'cash'、h.qty <= h.holdingqty、次にh.holdingqty 、それ以外はh.qty end quantityとなります。これは基本的に型が現金で、holdingqtyが> qtyはholdingqtyを使用し、そうでない場合はqtyを使用します。私たちはそれが現金ではないことをいつも知っているので、私はいつもqtyを使用します。私はcase文を簡略化するために少しオーダーを変更しました。 – xQbert
これらの列がNULL可能であるかどうかに注意してください。 – shawnt00