Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.30;
Скачать: CL | DM;

Вниз

Запрос   Найти похожие ветки 

 
makz ©   (2008-03-01 12:17) [0]

Есть таблица REG с полями ID, p и m (кроме прочих).  Поля p и m могут принимать значения 0 или 1. Запрос
 select case m when 0 then "M-" else "M+" end || case p when 0 then "П-" else "П+" end as CC, count(*)
 from REG
 group by m, p

выдает таблицу только для существующих в базе комбинаций значений m и p, например:

count    CC
2          M+П+
1          M+П-

а нужно всегда получать таблицу с 4мя строками:

count    CC
2          M+П+
1          M+П-
0          M-П+
0          M-П-

Как этого добится, пусть даже с ХП? Помогите пожалуйста!


 
www   (2008-03-01 22:21) [1]

select sum(cnt), cc from(
select count(*) as cnt, case m when 0 then "M-" else "M+" end || case p when 0 then "П-" else "П+" end as CC
from reg
group by m, p
union all
select 0, "M+П+" from rdb$database
union all
select 0, "M+П-" from rdb$database
union all
select 0, "M-П+" from rdb$database
union all
select 0, "M-П-" from rdb$database
)
group by cc


 
palva ©   (2008-03-01 23:36) [2]


select "Ì-Ï-" CC, count(*) from table3 where m=0 and p=0
union
select "&#204;-&#207;+" CC, count(*) from table3 where m=0 and p<>0
union
select "&#204;+&#207;-" CC, count(*) from table3 where m<>0 and p=1
union
select "&#204;+&#207;+" CC, count(*) from table3 where m<>0 and p<>0


 
makz ©   (2008-03-03 08:41) [3]

спасибо!


 
makz ©   (2008-03-03 09:48) [4]

Только вот проблема - есть еще один атрибут GDU, отчет нужен в 3 колонки:

GDU1     GDU2       CC
2          3             M+П+
1          4             M+П-
0          0             M-П+
0          1             M-П-


Тут только вложенный select поможет?


 
Johnmen ©   (2008-03-03 10:24) [5]


> еще один атрибут GDU

Что за атрибут и как он используется, мы должны, как обычно, догадаться сами?


 
makz ©   (2008-03-03 10:32) [6]

Просто еще одно поле integer в REG, в случае если оно принимает значение 41 - результат попадает в GDU1 отчета, при значении 42 - в GDU2, в остальных случаях запись отбрасывается.


 
Johnmen ©   (2008-03-03 11:05) [7]

Вместо COUNT в [2]:
SUM(CASE WHEN GDU=41 THEN 1 ELSE 0 END) AS GDU 1


 
makz ©   (2008-03-04 04:08) [8]

Понял, спасибо!



Страницы: 1 вся ветка

Текущий архив: 2008.03.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
6-1183968995
Рацелий
2007-07-09 12:16
2008.03.30
Проблемы с геттерами


15-1202993739
Тарантас
2008-02-14 15:55
2008.03.30
Установка SVN как сервера под Windowsбез Apache


2-1204410233
Dizark
2008-03-02 01:23
2008.03.30
Как получить номер записи из DBGrid


2-1204285666
Knoob
2008-02-29 14:47
2008.03.30
Настройка Webbrowser


2-1204474078
switch
2008-03-02 19:07
2008.03.30
Перемещение по картинкам