私はこのSQL SELECTクエリを持っています。SQL SELECTクエリの下でCASEを変数に割り当てる方法は?
SELECT STOCK
,QTY*PRICE AS 'TOTAL'
,(QTY*PRICE)*RATE AS 'VALUATION'
,((QTY*PRICE)*RATE)+1 AS 'ADD_VALUATION'
,CASE WHEN GRP = 'A' THEN 100 - isnull(LDP_A,0)
WHEN GRP = 'B' THEN 100 - isnull(LDP_B,0)
WHEN GRP = 'C' THEN 100 - isnull(LDP_C,0)
-- TO Z
END AS 'LDP'
,(((QTY*PRICE)*RATE)+1)
/
(CASE WHEN GRP = 'A' THEN 100 - isnull(LDP_A,0)
WHEN GRP = 'B' THEN 100 - isnull(LDP_B,0)
WHEN GRP = 'C' THEN 100 - isnull(LDP_C,0)
-- TO Z
END) * RATE AS HTC
FROM STOCKBL
このようなステートメントの冗長性を除去する方法はありますか?どのようにCASEを変数に代入することができるので、これをもっときちんとしたコードに置き換えることができます。
あなたがCROSS APPLY
を使用することができますSQL Serverでの
は、MySQLやSQL Serverのこのですか? –
@GiorgosBetsosそれはSQLサーバーです。謝罪 – theo
GRPとは何ですか? – Rajan