SQL не работает с использованием возвращаемых столбцов из подзапроса в группе по - PullRequest
0 голосов
/ 20 ноября 2018

Мне нужно выполнить запрос, как показано ниже, но он не распознает SHOWNDATE.Почему это происходит?

Запрос был упрощен, чтобы было понятно:

select  PYNAME,
        SHOWNDATE=(SELECT MAX(OUTCOMETIME) FROM A where A.ID=B.ID),
        count(PYSUBJECTID)
from B
group by PYNAME,
         SHOWNDATE

Ответы [ 3 ]

0 голосов
/ 20 ноября 2018

Вот пример, основанный на схеме Скотта, который показывает, как это сделать:

SQL> select b.deptno,
  2         (select max(a.sal) from emp a where b.deptno = a.deptno) as showsal,
  3         count(b.empno)
  4  from emp b
  5  group by b.deptno;

    DEPTNO    SHOWSAL COUNT(B.EMPNO)
---------- ---------- --------------
        30       2850              6
        20       3000              3
        10       5000              3

SQL>

Или, примененный к вашему запросу:

select  b.pyname,
        (select max(a.outcometime) from a where a.id = b.id) showndate,
        count(b.pysubjectid)
from b
group by b.pyname;

Не забудьте применить псевдонимы таблицко всем столбцам!

0 голосов
/ 20 ноября 2018

ALIAS (в данном случае SHOWNDATE) не является допустимым идентификатором, но он предназначен для набора результатов из подзапроса.Псевдонимы используются для удобства ... никто не хочет "ВЫБЕРИТЕ МАКС. (РЕЗУЛЬТАТ) ИЗ А, где A.ID = B.ID" в качестве имени столбца.

select 
PYNAME
,SHOWNDATE
,COUNT
from (
select   PYNAME
    ,(SELECT MAX(OUTCOMETIME) FROM A where A.ID=B.ID) SHOWNDATE
    ,count(PYSUBJECTID) COUNT
from B
 Group by PYNAME
)
group by  PYNAME
     ,SHOWNDATE
     ,COUNT
0 голосов
/ 20 ноября 2018

Я думаю, что в предложении Select пишите AS SHOWNDATE SHOWNDATE = не верно.

select
PYNAME,
(SELECT MAX(OUTCOMETIME) FROM A where A.ID=B.ID) AS SHOWNDATE,
count(PYSUBJECTID)
from B
group by PYNAME,SHOWNDATE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...