1. Каким образом можно учитывать NULL значения?
т.е. например в одной табличке есть список организаций, а во второй данные о денежных переводах.
Например выбираем данные о суммах переводах на какое-нибудь число по каждой из фирм, в итоге получаем
список фирм и суммы — но не получаем те фирмы у которых денежных переводов в этот день не было, а хотелось бы получить и их тоже, только с суммой 0.0 !
2. Таже самая таблица с денежными переводами. Нужно получить данных о переводах одной фирмы за год например в таком виде:
Здравствуйте, oSandmaNo, Вы писали:
SN>1. Каким образом можно учитывать NULL значения? SN>т.е. например в одной табличке есть список организаций, а во второй данные о денежных переводах. SN>Например выбираем данные о суммах переводах на какое-нибудь число по каждой из фирм, в итоге получаем SN>список фирм и суммы — но не получаем те фирмы у которых денежных переводов в этот день не было, а хотелось бы получить и их тоже, только с суммой 0.0 !
SN>2. Таже самая таблица с денежными переводами. Нужно получить данных о переводах одной фирмы за год например в таком виде:
SN>Январь | Февраль | Март | .... SN>------------------------------ SN>сумма | сумма | сумма |
SN>Спасибо
Здравствуйте, oSandmaNo, Вы писали:
SN>1. Каким образом можно учитывать NULL значения? SN>т.е. например в одной табличке есть список организаций, а во второй данные о денежных переводах. SN>Например выбираем данные о суммах переводах на какое-нибудь число по каждой из фирм, в итоге получаем SN>список фирм и суммы — но не получаем те фирмы у которых денежных переводов в этот день не было, а хотелось бы получить и их тоже, только с суммой 0.0 !
SN>2. Таже самая таблица с денежными переводами. Нужно получить данных о переводах одной фирмы за год например в таком виде:
SN>Январь | Февраль | Март | .... SN>------------------------------ SN>сумма | сумма | сумма |
SN>Спасибо
Если Оракле то есть функция NVL ("ПОЛЕ","ЗНАЧЕНИЕ_ЕСЛИ_ПОЛЕ_NULL")
в MySQL IFNULL("ПОЛЕ","ЗНАЧЕНИЕ_ЕСЛИ_ПОЛЕ_NULL")
Соответственно возвращают значение поля если оно не NULL
в противном случае "ЗНАЧЕНИЕ_ЕСЛИ_ПОЛЕ_NULL"
тебе надо сделать что-то вроде SUM (IFNULL("ПОЛЕ",0)) ...
Здравствуйте, oSandmaNo, Вы писали:
SN>1. Каким образом можно учитывать NULL значения? SN>т.е. например в одной табличке есть список организаций, а во второй данные о денежных переводах. SN>Например выбираем данные о суммах переводах на какое-нибудь число по каждой из фирм, в итоге получаем SN>список фирм и суммы — но не получаем те фирмы у которых денежных переводов в этот день не было, а хотелось бы получить и их тоже, только с суммой 0.0 !
SN>2. Таже самая таблица с денежными переводами. Нужно получить данных о переводах одной фирмы за год например в таком виде:
SN>Январь | Февраль | Март | .... SN>------------------------------ SN>сумма | сумма | сумма |
SN>Спасибо
Здравствуйте, oSandmaNo, Вы писали:
SN>Конкретезируем
SN>таблица A: SN>таблица B: SN>Делаем запрос SN>SELECT b2,SUM(isnull(a2) FROM A,B GROUP BY b2 WHERE MONTH(a3)=1 AND b1=a1
Делаем запрос:
SELECT
b2, SUM(isnull(a2,0)) as a2
FROM
B LEFT JOIN A ON b1=a1 AND MONTH(a3)=1
GROUP BY
b2
D>SELECT b2,SUM( IFNULL (a2,0) ) FROM B LEFT JOIB A on b1=a1 GROUP BY b2 WHERE MONTH(a3)=1
D>
D> не могу ща проверить, по этому если не работает подумаю потом — дома
Так не сработает (по крайней мере в MS SQL 2K)
1. WHERE пройдется по всему запросу и покоцает записи
2. WHERE должно идти раньше GROUP
3. Функция называется isnull
LY>SELECT LY> b2, SUM(isnull(a2,0)) as a2 LY>FROM LY> B LEFT JOIN A ON b1=a1 AND MONTH(a3)=1 LY>GROUP BY LY> b2 LY>[/sql]
SN>>Получаем LY>b2 a2 LY>e .0000 LY>q 1.3000 LY>w 3.3000
LY>Это то, что надо?
У меня так не получается !!!
Здравствуйте, oSandmaNo, Вы писали:
SN>Здравствуйте, Dimka, Вы писали:
D>>Здравствуйте, oSandmaNo, Вы писали: SN>>>У меня так не получается !!!
D>>а чё за БД я никак не въеду ?
SN>ПРОБОВАЛ В ASSECC и VFP
Ну блин
Вам что, настолько лень в доках копаться???
30 сикунд на поиск в справке по слову null и:
В аксессе этот же запрос выглядит следующим образом:
SELECT b.b2, Sum(Nz([a2],0)) AS aa
FROM b LEFT JOIN a ON (b.b1 = a.a1 AND Month([a3])=1)
GROUP BY b.b2
SELECT GFirm.FirmName,
SUM(Iif(MONTH(ODate)=1,OSumm,0)) as A1,
SUM(Iif(MONTH(ODate)=2,OSumm,0)) as A2,
SUM(Iif(MONTH(ODate)=3,OSumm,0)) as A3,
SUM(Iif(MONTH(ODate)=4,OSumm,0)) as A4,
SUM(Iif(MONTH(ODate)=5,OSumm,0)) as A5,
SUM(Iif(MONTH(ODate)=6,OSumm,0)) as A6,
SUM(Iif(MONTH(ODate)=7,OSumm,0)) as A7,
SUM(Iif(MONTH(ODate)=8,OSumm,0)) as A8,
SUM(Iif(MONTH(ODate)=9,OSumm,0)) as A9,
SUM(Iif(MONTH(ODate)=10,OSumm,0)) as A10,
SUM( Iif( MONTH(ODate)=11, OSumm ,0) ) as A11,
SUM( Iif( MONTH(ODate)=12, OSumm ,0) ) as A12
FROM GFirm LEFT JOIN Operations ON Operations.firmkey=GFirm.firmkey GROUP By FirmName ORDER BY FirmName