我有这个 sql 查询:
select "Amount",
"Month",
SCWM.out_menu1Text
from
(select sum(II2.LocalTAmountWithoutVAT) as "Amount",
ib_string_right('00' || ib_decodedate_month(II.docdate$date), 2) as "Month",
sc.id as "Menu"
from IssuedInvoices2 II2
join IssuedInvoices II on II.id = II2.parent_id
left join StoreCards SC on SC.ID = II2.StoreCard_ID
left join firms F on F.id = II.firm_id
where
ib_decodedate_year(II.docdate$date) = (EXTRACT(YEAR FROM CURRENT_DATE))
and ib_decodedate_month(II.docdate$date) >= @{_od}
and ib_decodedate_month(II.docdate$date) <= @{_do}
and F.id = '@{_firmID}'
group by
ib_string_right('00' || ib_decodedate_month(II.docdate$date), 2),
"Menu")
left join ABI_StoreCardsWithMenu("Menu") SCWM on SCWM.OUT_StoreCard_ID = "Menu"
order by
SCWM.out_menu1Text
结果:
但我需要实现这一点:
通缉表 http://img32.imageshack.us/img32/9486/mjw7.png
函数ABI_StoreCardsWithMenu("Menu") SCWM
采用“菜单”列并返回右组。例如,在数据库中是“nail”,此函数获取“nail”的 ID 并返回组的名称 -->“01. Potrubí a fitinky”。
得到这么短的表的原因是,SQL 查询在 WHERE 子句中使用了条件。如果选定的公司没有sc.id
属于第二组“02.Nářadí”,则该组将不会出现在结果表中。
我需要的是显示所有组的解决方案,但我需要避免读取数据库中的每条记录(数据库非常庞大,加载所有记录需要 10-20 分钟)。