Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как не выводить значения равные 0.00  [new]
denisn
Member

Откуда:
Сообщений: 52
Привет всем!
есть вот такой запрос:

DECLARE @SROK AS INT, @MINSUMM AS INT, @MAXSUMM AS INT
SET @SROK = 1
SET @MINSUMM = 0
SET @MAXSUMM= 1000

SELECT BANKLITLENAME+ ' ' +CONVERT(NVARCHAR(10),SUMM),
CASE @SROK
WHEN 0 THEN MAX(M0)
WHEN 1 THEN MAX(M1)
WHEN 2 THEN MAX(M2)
WHEN 3 THEN MAX(M3)
WHEN 4 THEN MAX(M4)
WHEN 5 THEN MAX(M5)
WHEN 6 THEN MAX(M6)
WHEN 9 THEN MAX(M9)
WHEN 10 THEN MAX(M10)
WHEN 12 THEN MAX(M12)
WHEN 13 THEN MAX(M13)
END
FROM PROCENT_BANK_KONKURENT INNER JOIN BANK_KONCURENT ON PROCENT_BANK_KONKURENT.BANKNAME = BANK_KONCURENT.BANKNAME
WHERE VAL = 810 AND SUMM >@MINSUMM AND SUMM <@MAXSUMM
GROUP BY BANKLITLENAME+ ' ' +CONVERT(NVARCHAR(10),SUMM)


Он выбирает из таблицы максимальные значения из М0, М1, ... и т.д.
в некоторых М0, М1, есть значения равные 0.00 (не NULL ) вопрос как их НЕ ВЫВОДИТЬ

HAVING не подходит т.к. когда запрос родится он перекачует в сохраненную процедуру с параметрами... где в качестве одного из параметров будет @SROK.

засовывать все сначала во временную таблицу тоже нельзя т.к. этот запрос будет выполняться одновременно (для построения графиков) несколькими процедурами в отчете из accessxp

операционка W98 officeXpsp2, msde из состава sql 200 энтерпрайс
5 апр 04, 09:57    [611874]     Ответить | Цитировать Сообщить модератору
 Re: как не выводить значения равные 0.00  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
DECLARE @SROK AS INT, @MINSUMM AS INT, @MAXSUMM AS INT

SET @SROK = 1
SET @MINSUMM = 0
SET @MAXSUMM= 1000

select * from (
SELECT BANKLITLENAME+ ' ' +CONVERT(NVARCHAR(10),SUMM),
CASE @SROK
WHEN 0 THEN MAX(M0)
WHEN 1 THEN MAX(M1)
WHEN 2 THEN MAX(M2)
WHEN 3 THEN MAX(M3)
WHEN 4 THEN MAX(M4)
WHEN 5 THEN MAX(M5)
WHEN 6 THEN MAX(M6)
WHEN 9 THEN MAX(M9)
WHEN 10 THEN MAX(M10)
WHEN 12 THEN MAX(M12)
WHEN 13 THEN MAX(M13)
END as max_m
FROM PROCENT_BANK_KONKURENT INNER JOIN BANK_KONCURENT ON PROCENT_BANK_KONKURENT.BANKNAME = BANK_KONCURENT.BANKNAME
WHERE VAL = 810 AND SUMM >@MINSUMM AND SUMM <@MAXSUMM
GROUP BY BANKLITLENAME+ ' ' +CONVERT(NVARCHAR(10),SUMM)
)
where max_m > 0
5 апр 04, 10:01    [611882]     Ответить | Цитировать Сообщить модератору
 Re: как не выводить значения равные 0.00  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Те же..., только в профиль

DECLARE @SROK AS INT, @MINSUMM AS INT, @MAXSUMM AS INT

SET @SROK = 1
SET @MINSUMM = 0
SET @MAXSUMM= 1000

SELECT BANKLITLENAME+ ' ' +CONVERT(NVARCHAR(10),SUMM),
CASE @SROK
WHEN 0 THEN MAX(M0)
WHEN 1 THEN MAX(M1)
WHEN 2 THEN MAX(M2)
WHEN 3 THEN MAX(M3)
WHEN 4 THEN MAX(M4)
WHEN 5 THEN MAX(M5)
WHEN 6 THEN MAX(M6)
WHEN 9 THEN MAX(M9)
WHEN 10 THEN MAX(M10)
WHEN 12 THEN MAX(M12)
WHEN 13 THEN MAX(M13)
END
FROM PROCENT_BANK_KONKURENT INNER JOIN BANK_KONCURENT ON PROCENT_BANK_KONKURENT.BANKNAME = BANK_KONCURENT.BANKNAME
WHERE VAL = 810 AND SUMM >@MINSUMM AND SUMM <@MAXSUMM
GROUP BY BANKLITLENAME+ ' ' +CONVERT(NVARCHAR(10),SUMM)
HAVING (CASE @SROK
WHEN 0 THEN MAX(M0)
WHEN 1 THEN MAX(M1)
WHEN 2 THEN MAX(M2)
WHEN 3 THEN MAX(M3)
WHEN 4 THEN MAX(M4)
WHEN 5 THEN MAX(M5)
WHEN 6 THEN MAX(M6)
WHEN 9 THEN MAX(M9)
WHEN 10 THEN MAX(M10)
WHEN 12 THEN MAX(M12)
WHEN 13 THEN MAX(M13)
END
)<>0
5 апр 04, 11:59    [612175]     Ответить | Цитировать Сообщить модератору
 Re: как не выводить значения равные 0.00  [new]
denisn
Member

Откуда:
Сообщений: 52
Всем спасибо как то сам про то, что в having можно case делать не додумался....
  • 5 апр 04, 13:45    [612486]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить