Главная страница
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.048 c
2-1204243398
максим
2008-02-29 03:03
2008.03.30
как сделать активным окно


15-1203407574
Бугага
2008-02-19 10:52
2008.03.30
Firebird, шифрование


2-1204283662
Yurij-7
2008-02-29 14:14
2008.03.30
Как правильно написать SQL


3-1194512166
zorik
2007-11-08 11:56
2008.03.30
Корректное отключение (подключение) TIBDatabase


15-1203177531
Alien1769
2008-02-16 18:58
2008.03.30
Интересная ошибка