powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / group by with case
24 сообщений из 24, страница 1 из 1
group by with case
    #38664157
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет друзья, вот стала задача создать некий универсальный запрос в процедуре,
решил сделать так:
Код: sql
1.
order by case when :t = 0 then 2 when :t = 1 then 3 when :t = 2 then 4 end desc


Ошибки (IBExpert) нет, но нет сортировки. Можно конечно заменить на Execute Statement, но хотелось бы иначе ...
Прочел, что в MS SQL есть возможность использовать case в order by, но если указывать название поля ... а вот по номеру?
...
Рейтинг: 0 / 0
group by with case
    #38664161
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dnicoа вот по номеру?
Обломайтиссс...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
group by with case
    #38664163
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Ну не надо так уж ...
...
Рейтинг: 0 / 0
group by with case
    #38664168
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DnicoНу не надо так уж ...
"Надо, Федя, надо." (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
group by with case
    #38664169
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Вот Дима, мне многие говорят, что на этом форуме многие отвечают не очень корректно. Вот пример. Твой.
Давайте отвечать нормально.
...
Рейтинг: 0 / 0
group by with case
    #38664171
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
order by по case-выражению сразу начнёт вычислять это выражение вместо применения сортировки с содержимому столбов. Не получится, в общем.
...
Рейтинг: 0 / 0
group by with case
    #38664173
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DnicoДавайте отвечать нормально.
Хорошо, отвечаю: то, что ты хочешь - невозможно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
group by with case
    #38664175
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,
Ну да, я это уже понял, но вот так хочется...
...
Рейтинг: 0 / 0
group by with case
    #38664177
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dnicoа вот по номеру?А зачем тебе именно по номеру? Имя поля неизвестно что ли?
...
Рейтинг: 0 / 0
group by with case
    #38664180
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Ну, тут я поспорю, если заворочаться, то все возможно, но действительно можно решить другими средствами.
Я думаю только через Execute Statement, но если есть еще варианты, то я бы выслушал.
...
Рейтинг: 0 / 0
group by with case
    #38664183
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select A.ID, count(D.GID) as A, sum(
               case
                 when D.T in (1, 4) then D.QTY
                 else -D.QTY
               end) AS B,
               sum(
               case
                 when D.T in (1, 4) then D.QTY * D.PRICE
                 else -D.QTY * D.PRICE
               end) AS C
...
Рейтинг: 0 / 0
group by with case
    #38664198
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего это можно сделать в select-е , так что вопрос скорее всего снят ...
...
Рейтинг: 0 / 0
group by with case
    #38664211
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dnico> select A.ID, count(D.GID) as A, sum(

А где тут order by? Просто напиши order by 2 и всё.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
group by with case
    #38664214
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,
Да мне нужно
вот это
Код: plsql
1.
order by case when :t = 0 then 2 when :t = 1 then 3 when :t = 2 then 4 end desc
...
Рейтинг: 0 / 0
group by with case
    #38664217
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда DT.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
group by with case
    #38664222
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Ну я понял.
...
Рейтинг: 0 / 0
group by with case
    #38664223
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тему можно закрывать
...
Рейтинг: 0 / 0
group by with case
    #38664229
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно даже без DT обойтись, если торчащее наружу лишнее поле не мешает.

Но всё равно это кривизна. Небось, для интерфейсной галочки какой-то? :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
group by with case
    #38664247
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DnicoDimitry Sibiryakov,
Вот Дима, мне многие говорят, что на этом форуме многие отвечают не очень корректно. Вот пример. Твой.
Давайте отвечать нормально.

главное по существу
а форма - не главное
...
Рейтинг: 0 / 0
group by with case
    #38664343
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIsk> главное по существу

По существу ответ уже даден.
Хоть это и воркэраунд, конечно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
group by with case
    #38664578
Фотография Exteris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
select case when :t=1 then field1 when :t=2 then field2 when :t=3 then field3 end, ...
from sometable
order by 1


...
Рейтинг: 0 / 0
group by with case
    #38665417
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай те дальше ...
Почему запрос не выдает ошибки, но и не выдает правильных результатов ?
...
Рейтинг: 0 / 0
group by with case
    #38665431
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
select * from goods g order by case when :t = 0 then 2 when :t = 1 then 3 when :t = 2 then 4 end desc


ОФИГИТЕЛЬНО РАБОТАЕТ.
...
Рейтинг: 0 / 0
group by with case
    #38665539
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dnico> Давай те дальше ...

Я же уже дал ответ. Он непонятен и нужно приводить пример?

> Почему запрос не выдает ошибки, но и не выдает правильных результатов ?

Не выдаёт ошибки, потому что её нет.
И "как тебе бы хотелось" и "правильно"
вовсе не всегда одно и то же.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / group by with case
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]