Member 12770648 Ответов: 1

(ZANNUAL/12-(ZANNUAL-ZTAXBAND)/12)*ZRATE/100 как ZMAXTAX ноль для первой записи


ВСТАВИТЬ В #SRESULTS(ZZBAND,ZZTAXBAND,ZZRATE,ZZANNUAL,ZZMONTHLY,ZZMAXTAX)
ВЫБЕРИТЕ ОТДЕЛЬНЫЙ ZBAND,
ZTAXBAND,
ZRATE,
ЗАННУАЛ,
ZANNUAL/12 AS ZMONTHLY,
(ZANNUAL/12-(ZANNUAL-ZTAXBAND)/12)*ZRATE/100 AS ZMAXTAX
ОТ #FRESULTS


---------------------------------------------------------------------------------------------------------

1. Хочу первая запись вычисление недооцененного "ZMAXTAX" равным нулю, как я могу этого достичь.



(ZANNUAL/12-(ZANNUAL-ZTAXBAND)/12)*ZRATE/100 AS ZMAXTAX

Что я уже пробовал:

Это постоянный вызов Select statement

OriginalGriff

И что же?
А что вы пробовали?
Где ты застрял?
Какая помощь вам нужна?

Wendelius

Как вы определяете первую запись? Первый основан на чем?

1 Ответов

Рейтинг:
1

CHill60

Как указал @Wendelius, нет никакой концепции "первой записи", если у вас нет каких-либо средств определения порядка, в котором эти записи должны интерпретироваться.

Поскольку у вас нет очевидного автоматического приращения, а также определения "первого", я предположил, что записи появятся в порядке ZBAND + ZTAXBAND для генерации номера строки. Затем я могу использовать этот номер строки в операторе CASE, подобном этому

;WITH CTE AS
 (
	SELECT DISTINCT ROW_NUMBER() OVER (ORDER BY ZBAND, ZTAXBAND) AS RN,
	ZBAND,
	ZTAXBAND,
	ZRATE,
	ZANNUAL,
	ZANNUAL/12 AS ZMONTHLY,
	(ZANNUAL/12-(ZANNUAL-ZTAXBAND)/12)*ZRATE/100 AS ZMAXTAX 
	FROM #FRESULTS 
)
INSERT INTO #SRESULTS(ZZBAND,ZZTAXBAND,ZZRATE,ZZANNUAL,ZZMONTHLY,ZZMAXTAX)
SELECT 
	ZBAND,
	ZTAXBAND,
	ZRATE,
	ZANNUAL,
	ZANNUAL/12 AS ZMONTHLY,
	CASE WHEN RN = 1 THEN 0 ELSE (ZANNUAL/12-(ZANNUAL-ZTAXBAND)/12)*ZRATE/100 END AS ZMAXTAX 
	FROM CTE