Использование предложения «AS» в подзапросе, содержащем предложение «WHERE»

#ms-access

#ms-access

Вопрос:

Я хочу сохранить результат в переменной, сгенерированной с помощью предложения «AS» в MS Access, и использовать этот результат в подзапросе с предложением WHERE.

Я попробовал это:

 SELECT en_date AS date_en, (select sum(amount) 
  from main where
    CrDb='Cr'
  and
    en_date=date_en) AS CR_AMT
FROM main
GROUP BY en_date;
  

Ответ №1:

Я совершенно уверен, что вы не можете использовать псевдоним (назначение AS) в том же SELECT, в котором вы его определили.

Я не могу точно сказать, что вы пытаетесь сделать, но похоже, что вы хотите присоединить таблицу к самой себе.

Комментарии:

1. В Access (ACE, Jet, что угодно) можно использовать AS предложение в том же SELECT предложении в той же области, в которой оно определено, например SELECT 2 AS two, two two AS four; , является законным (странно, хотя не может использоваться в ORDER BY предложении).

Ответ №2:

 SELECT
    en_date,
    SUM(amount)
FROM
    main a
INNER JOIN
(
    SELECT
        en_date AS date_en,
        CrDb
    FROM
        main 
    WHERE
        CrDb='Cr'
)b
ON
    a.en_date = b.date_en
    AND a.CrDb = b.CrDb
GROUP BY
    en_date
  

Ответ №3:

 select m.en_date date_en, sum(m.amount)
from main m
where CrDb = 'Cr'
group by m.en_date 
  

Другими словами, я не думаю, что вам даже нужен подзапрос, чтобы получить результаты, которые вы ищете.