Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Krapachino Member Откуда: Сообщений: 1 |
Есть две таблицы : db_person со столбцами id, stat db_person_fio cо столбцами id_person, dr(дата рождения), w(1- мужчина, 2 - женщина) Нужно составить запрос который будет показывать сколько есть в базе человек для каждого w (мужчина , женщина) с интервалом в 10 лет, и stat > 0 .Например : ............Мужчин Женщин 10 лет...1000.....548 20 лет...4564.....8944 и так далее Есть похожий на правду запрос, только он не работает SELECT T.YEAR, SUM(CASE WHEN T.W = 1 THEN 1 ELSE 0 END) AS MEN, SUM(CASE WHEN T.W = 2 THEN 1 ELSE 0 END) AS WOMEN FROM (SELECT (YEAR(CURRENT_DATE) - YEAR(F.DR)) DIV 10 AS YEAR, F.W FROM DB_PERSON AS P LEFT JOIN DB_PERSON_FIO AS F ON P.ID = F.ID_PERSON WHERE P.STAT > 0) AS T |
3 авг 16, 17:11 [19494408] Ответить | Цитировать Сообщить модератору |
xenix
Guest |
ну можно попробовать слепить чего-то наподобиеWITH X AS ( SELECT D.ID_PERSON, D.W, CASE WHEN YEAR(D.DR)BETWEEN 0 AND 10 THEN '0-10' WHEN YEAR(D.DR)BETWEEN 11 AND 20 THEN '11-20' ...... END AS FLAG FROM db_person_fio D ) SELECT C.W,COUNT(C.FLAG)CNT FROM X AS C JOIN db_person PERSON ON C.ID_PERSON=PERSON.ID WHERE PERSON.STAT>0 GROUP BY C.W |
3 авг 16, 17:42 [19494587] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |