積み過ぎ列の割合を表示したい。
私のサンプルクエリ
select (SPGI09_EARLY_OVER_T – (SPGI09_OVER_WK_EARLY_ADJUST_T) / (SPGI09_EARLY_OVER_T + SPGR99_LATE_CM_T + SPGR99_ON_TIME_Q))
from
CSPGI09_OVERSHIPMENT
テーブル名-CSPGI09_OVERSHIPMENT
私の式:
-------------------------------------------------------
SPGI09_EARLY_OVER_T – (SPGI09_OVER_WK_EARLY_ADJUST_T)
-------------------------------------------------------
SPGI09_EARLY_OVER_T + SPGR99_LATE_CM_T + SPGR99_ON_TIME_Q
そして結果を%で表示したい、例えば66.57%
SQL SERVER 2008を使用しています
これらの列がすべてint
であると仮定した場合、最初に整理するのは1つ以上の列をより適切なデータ型に変換することです。int
除算は切り捨てを実行するため、100%未満の場合は結果が0になります。
select (100.0 * (SPGI09_EARLY_OVER_T – SPGI09_OVER_WK_EARLY_ADJUST_T)) / (SPGI09_EARLY_OVER_T + SPGR99_LATE_CM_T + SPGR99_ON_TIME_Q)
from
CSPGI09_OVERSHIPMENT
ここでは、数字の1つを100.0
これは、float
sではなくint
sを使用して計算結果を強制的に実行します。 100
、私はそれを%
。
私はあなたのブラケットに少し混乱しました-私はそれを正しいと思います-しかし、あなたは単一の値の周りにブラケットがあり、そして他の場所では演算子のミックスがありました(-
および/
)同じレベルで、どの演算子が最初に適用されるかを定義するために優先規則に依存していました。
このようなものを試してください
select Cast((SPGI09_EARLY_OVER_T – (SPGI09_OVER_WK_EARLY_ADJUST_T) / (SPGI09_EARLY_OVER_T + SPGR99_LATE_CM_T + SPGR99_ON_TIME_Q)) as varchar(20) + '%' as percentageAmount
from CSPGI09_OVERSHIPMENT
値はパーセント表記であると仮定します-有効なパーセント合計に変換しない場合は、%記号を追加し、列をvarcharに変換します。