Главная страница
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
15-1202877339
Xmen
2008-02-13 07:35
2008.03.30
Выбор книги.


15-1202826268
Real
2008-02-12 17:24
2008.03.30
Как обломать wine?


2-1203587539
Pavelkq
2008-02-21 12:52
2008.03.30
Многострочный текст в CheckListBox


15-1203166532
x.pro
2008-02-16 15:55
2008.03.30
Хостинг для БД


15-1202350486
tButton
2008-02-07 05:14
2008.03.30
а кто форумом занимается?