Код ошибки: 1054. Неизвестный столбец 'sdate' в 'предложении where' - PullRequest
0 голосов
/ 28 февраля 2019

Я получил эту ошибку в своем запросе. Есть ли у вас какие-либо идеи, как я могу поместить sdate в двухслойный подзапрос?

select
at.startDate as sdate, at.dau as DAU,
(
select count(distinct d.uid) from
 (select ses.uid from dsession as ses where ses.startDate = sdate group by ses.uid
  union all
  select res.uid from rsession as res where res.startDate = sdate group by res.uid) as te
) as MAU, (SELECT DAU/MAU) as AVG
from
attendance as at 

это работает, если я запрашиваю только подзапрос, но когда яобъединить его с основным запросом, sdate стало неизвестным.любая идея?

Я пытался заменить sdate на where как at.startDate, но все еще получил неизвестный столбец at.startDate.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Вместо выбора в главном предложении выбора я создал подзапрос для соединения, чтобы можно было проверить startDate

SELECT at.startDate AS sdate, at.dau AS DAU, (DAU/MAU.cnt) as AVG
FROM attendance AS at
JOIN (SELECT startdate, count(distinct uid) as cnt
      FROM (SELECT uid, startdate FROM dsession
            UNION ALL
            SELECT uid, startdate FROM rsession) as ua
      GROUP BY startdate
     ) as MAU ON MAU.startdate = at.startdate

Надеюсь, я ничего не испортил при реструктуризации запроса:)

0 голосов
/ 28 февраля 2019

Нельзя использовать псевдоним столбца в предложении where.Просто используйте оригинальное имя столбца:

where at.startDate between @startDate and @endDate 

Псевдоним - это , принятый в order by, поэтому его не нужно менять.

...