MAX внутри CASE

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

MAX внутри CASE

Сообщение Dmitriy Solomnikov » 24.07.2006 (Пн) 15:58

не работает запрос
    SELECT CASE MAX(Код_контрагента) WHEN null then 0 else MAX(Код_контрагента) END FROM Контрагенты

Все время выдает NULL, хотя в базе нет никаких записей и должен выдавать 0, при условии, что просто
    SELECT MAX(Код_контрагента) FROM Контрагенты

выдает NULL.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 24.07.2006 (Пн) 16:39

Код: Выделить всё
SELECT COALESCE(MAX([Код_контрагента]),0) FROM Контрагенты


может все-таки так :?:

Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

Сообщение Dmitriy Solomnikov » 24.07.2006 (Пн) 16:45

с одной проблемой разобрались, появилась другая:

    INSERT INTO Контрагенты(Код_контрагента) VALUES(SELECT COALESCE(MAX([Код_контрагента]),0) FROM Контрагенты)

выдает:
    Server: Msg 156, Level 15, State 1, Line 1
    Incorrect syntax near the keyword 'SELECT'.
    Server: Msg 170, Level 15, State 1, Line 1
    Line 1: Incorrect syntax near ')'.


Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

Сообщение Dmitriy Solomnikov » 24.07.2006 (Пн) 17:50

INSERT INTO Контрагенты(Код_контрагента, Дата_начала_действия, Дата_конца_действия)
(select (SELECT COALESCE(MAX([Код_контрагента]),0) FROM Контрагенты), '12.12.1982','12.21.1982')

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 24.07.2006 (Пн) 18:43

Код: Выделить всё
INSERT INTO Контрагенты ([Код_контрагента])
SELECT ISNULL(MAX([Код_контрагента]), 0) FROM Контрагенты

В случае одного аргумента COALESCE() вырождается в ISNULL(), а в случае использования конструкции Insert into ... Select добавлять VALUES настоятельно не рекомендуется - лишний уровень скобок приводит только к путанице.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 2

    TopList