![](/img/trans.png)
[英]How to create calculated Geometry column that ignores NULL values in SQL Server
[英]How to create a calculated column on the fly in SQL Server?
這是我正在使用的查詢。
Select Product, Number,
(Select
CASE
WHEN Product = 'WATCH'
THEN (DaysRemYr-125)
ELSE DaysRemYr
END
from report) DaysRem,
((dailysales_YTD*DaysRem)+(SumYTDRev)) as ProjRev
From report
Group by Product,Number
現在一切都搞砸了,但是我想要實現的是一個計算列,即Projected_Revenue,該列由
DailySales_YTD*DaysRemYr
但是,我想創建一個新的“ DaysRemYr”列,將其命名為DaysRem,其邏輯是
WHEN Product = 'WATCH'
THEN (DaysRemYr-125)
ELSE DaysRemYr
這樣我就可以使用此新列來計算另一列,如下所示,
((dailysales_YTD*DaysRem)+(SumYTDRev)) as ProjRev
為了消除任何困惑和總結,我試圖通過將現有列與有條件的新計算列相乘來創建要計算一列的Select語句。
所以,這個想法是說
Select
Product, Number,
a calculated column which is based on the CASE condition as shown before lets call it DaysRem,
(SUM(DailySales_YTD*DaysRem)+SUM(SUMYTDRev)) as ProjRev
from report
我想知道是否有可能。
這里有一些示例數據可以提供幫助。
Product Number SUMYTDRev dailySales_YTD DaysRemYR
WHEEL 2533 9370.58 112.90 170
WHEEL 8213 3206.08 38.63 170
WHEEL 6475 22770 274.34 170
WHEEL 6475 80608.01 971.18 170
WATCH 8213 146007.2 1759.12 170
WATCH 1177 11500.9 138.57 170
WATCH 1177 39006 469.95 170
WATCH 2371 446990 5385.42 170
WATCH 2371 69005.4 831.39 170
WATCH 204 260008 3132.63 170
BIKE 441 60000 722.89 170
BIKE 6815 18300 220.48 170
BIKE 8918 39900 480.72 170
您可以在計算中使用case
表達式。
Select Product, Number,
CASE WHEN Product = 'WATCH' THEN DaysRemYr-125 ELSE DaysRemYr END as DaysRem,
SUM(DailySales_YTD*CASE WHEN Product = 'WATCH' THEN DaysRemYr-125 ELSE DaysRemYr END)+SUM(SUMYTDRev) as ProjRev
From report
Group by Product,Number,CASE WHEN Product = 'WATCH' THEN DaysRemYr-125 ELSE DaysRemYr END
如果不想多次指定計算,請在計算中使用派生表。
Select Product, Number, DaysRem,
SUM(DailySales_YTD*DaysRem)+SUM(SUMYTDRev) as ProjRev
From (select r.*,CASE WHEN Product = 'WATCH' THEN DaysRemYr-125 ELSE DaysRemYr END as DaysRem
from report r) r
Group by Product,Number,DaysRem
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.