![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос [IB6.x]
GanibalLector © (2004-11-23 01:43:00)Есть такие поля : kol,type
Необходимо summ(kol) where type>1 !!!минус!!! summ(kol) where type=0
Типа как?Что-то немогу понять...
Sandman25 (2004-11-24 11:14:00) [1][18] Johnmen © (24.11.04 11:08)
Красиво. Спасибо, запомню идею :)
Johnmen (2004-11-24 11:08:00) [2]>Sandman25 © (24.11.04 10:54) [17]
Выделение знака (sign) для целочисленного типа поля:
SELECT
CAST(CAST(integerfield-0.5 AS INT)+1.5 AS INT)-1-integerfield
FROM ...
Sandman25 (2004-11-24 10:54:00) [3][16] Johnmen © (24.11.04 10:47)
А если у нас уже целое?
Как из -3 сделать -1?
Johnmen (2004-11-24 10:47:00) [4]>Sandman25 © (24.11.04 10:45) [15]
Нет. Используя CAST к целому.
Sandman25 (2004-11-24 10:45:00) [5][14] Johnmen © (24.11.04 10:39)
Если есть CASE или IIF? Или преобразованием в CHAR и анализом первого символа?
Johnmen (2004-11-24 10:39:00) [6]>Sandman25 © (24.11.04 10:24) [12]
>Написать UDF типа sign?
Знак можно выделить и без исп-ия УДФ.
>Vemer © (24.11.04 10:32) [13]
Я имел в виду широкое понятие "тип". Напр. порода собак.
Vemer (2004-11-24 10:32:00) [7]Структуру таблиц думать надо, чтобы потом данные из них просто выковыривались. С точки зрения "типа" операции могут быть (-1, 1 и 0) а по "статусу" - сколько угодно (поставка, продажа, заказ, кредит, изменение пая, использование на фирме и т.д. и т.п.). Но все "статусы" вписываются в 3 "типа" .
Sandman25 (2004-11-24 10:24:00) [8]>А на что поменять type, больший 1 ?
Написать UDF типа sign?
Johnmen (2004-11-24 10:24:00) [9]>Vemer © (24.11.04 10:21) [10]
Да нормальный пример. Только типов может быть, и как правило бывает, больше 2/3.
Vemer (2004-11-24 10:21:00) [10]To JohnMen
Пример и предложение по замене - под конкретную задачу, и др. данных нет )). Обычно "тип" имеет значения (-1 и 1, иногда 0 (нейтральная операция)).
Johnmen (2004-11-24 10:06:00) [11]>Vemer © (24.11.04 10:02) [8]
А на что поменять type, больший 1 ?
:)
Vemer (2004-11-24 10:02:00) [12]Вот:
Select Sum(kol * ((Type*2)-1) from table
А еще проще поменять 0 на -1 в таблице.
Sandman25 (2004-11-24 09:58:00) [13][6] Deniz © (24.11.04 06:55)
В качестве внешней таблицы лучше использовать другую, желательно с одной строкой данных.
Deniz (2004-11-24 06:55:00) [14]
> GanibalLector © (23.11.04 09:35) [4]
> 2 Deniz
> > как должно быть показано?
> Одним числом.[3] пожет два
Я балдею, а запятую после sum_1 убрать и чуть-чуть подправить не судьба?
select distinct
(select sum(kol) from table where type >= 1) -
(select sum(kol) from table where type = 0) as sum_0
from table
stud (2004-11-23 10:25:00) [15]условия по агрегатным функциям вроде having надо использовать
GanibalLector (2004-11-23 09:35:00) [16]2 Deniz
> как должно быть показано?
Одним числом.[3] пожет два
Deniz (2004-11-23 08:15:00) [17]Как должно быть показано?
select distinct
(select sum(kol) from table where type >= 1) as sum_1,
(select -sum(kol) from table where type = 0) as sum_0
from table
В firebird есть case
GanibalLector (2004-11-23 01:50:00) [18]Ёпрс...пардоньте за ошибки!
su mи хотел
З.Ы. Пока трезв
GanibalLector (2004-11-23 01:44:00) [19]В ХП могу,но хотель бы без