Но вы это... В общем, пинайте меня.
до полного просветления :))
SELECT TMC.ID AS TMC_ID, TMC.NAME AS TMC_NAME
,(SELECT FIRST 1 TQ.QUANT FROM TABL$P_TMC_QUANT TQ WHERE(TQ.TMC_ID =
TMC.ID)AND(TQ.PLACE_ID = '1')) AS QNT000001
,(SELECT FIRST 1 TQ.QUANT FROM TABL$P_TMC_QUANT TQ WHERE(TQ.TMC_ID =
TMC.ID)AND(TQ.PLACE_ID = '2')) AS QNT000002
,(SELECT FIRST 1 TQ.QUANT FROM TABL$P_TMC_QUANT TQ WHERE(TQ.TMC_ID =
TMC.ID)AND(TQ.PLACE_ID = '3')) AS QNT000003
,(SELECT FIRST 1 TQ.QUANT FROM TABL$P_TMC_QUANT TQ WHERE(TQ.TMC_ID =
TMC.ID)AND(TQ.PLACE_ID = '4')) AS QNT000004
,(SELECT FIRST 1 TQ.QUANT FROM TABL$P_TMC_QUANT TQ WHERE(TQ.TMC_ID =
TMC.ID)AND(TQ.PLACE_ID = '5')) AS QNT000005
,(SELECT SUM(TQ.QUANT) FROM TABL$P_TMC_QUANT TQ WHERE(TQ.TMC_ID = TMC.ID))
AS QNTTOTAL
FROM TABL$R_TMC TMC ORDER BY TMC.NAME;
Что означает FIRST 1 в подзапросах? Ежели допускается, что под условие может
попасть более одной записи - запрос выдаст случайный бред, зависящий от
расположения записей на страницах БД. Ежели не допускается, то такой запрос
опять-же выдаст тот же бред при ситуации когда всеж-таки в данных каким-то
образом образовалась ошибка. Ежели предполагается, что данные всегда будут
правильными, то зачем FIRST?
With b/r. Gleb.
P.S.
И вообще, быстрее должен работать запрос вот такого вида :
select max(t.name) as nmtmc,
sum( iif(q.place_id = '1', q.quant, 0)) as qnt000001,
sum( iif(q.place_id = '2', q.quant, 0)) as qnt000002,
...
sum(q.quant) as qntnonal
from tabl$p_tmc_quant q
inner join tabl$r_tmc t on q.tmc_id = t.id
group by q.tmc_id