をすでにいくつかの有効な回答を受けていますが、あなたが別のアプローチを望む場合に備えて、これを掲示板にスローします...
あなたはいつものような、テーブル自体に、あなたの計算された列を追加することができます。
CREATE TABLE myTable
(
X INT
,Y INT
,Z INT
)
;
INSERT INTO myTable (X, Y, Z) VALUES (200, 10, 0);
INSERT INTO myTable (X, Y, Z) VALUES (300, 11, 1);
INSERT INTO myTable (X, Y, Z) VALUES (400, 12, 2);
INSERT INTO myTable (X, Y, Z) VALUES (500, 13, 3);
INSERT INTO myTable (X, Y, Z) VALUES (600, 14, 4);
INSERT INTO myTable (X, Y, Z) VALUES (700, 15, 5);
ALTER TABLE myTable ADD W AS
CASE Y
WHEN 10
THEN X
WHEN 11
THEN X * 333.3
WHEN 12
THEN X * 222.2
WHEN 13
THEN (X * 999) * 222.2
WHEN 14
THEN X * Z
WHEN 15
THEN (X * 222.2) * Z
END
;
SELECT * FROM myTable
;
戻り値:
X Y Z W
-----------------------------
200 10 0 200
300 11 1 99990
400 12 2 88880
500 13 3 110988900
600 14 4 2400
700 15 5 777700
一方で、あなただけのこの応答を一度したい、場合(特定のクエリの結果として)、あなたはすでに他のいくつかの回答があります:
SELECT
X
,Y
,Z
CASE Y
WHEN 10
THEN X
WHEN 11
THEN X * 333.3
WHEN 12
THEN X * 222.2
WHEN 13
THEN (X * 999) * 222.2
WHEN 14
THEN X * Z
WHEN 15
THEN (X * 222.2) * Z
END AS W
FROM myTable
;
出典
2017-02-24 14:55:17
3BK
['CASE'](htt ps://msdn.microsoft.com/en-us/library/ms181765.aspx?f = 255&MSPPError = -2147217396)式 –
OPが解決しようとしていないため、この質問をトピックとして閉じようとしています自分自身の問題。 –