xhon Ответов: 1

Как объединить подзапрос внутри from vs from table_name?


Привет,

Мне нужно выбрать только один столбец среди тех, которые возвращаются оператором Select, и я пытаюсь использовать подзапрос внутри FROM, чтобы сделать это.

Моя проблема заключается в том, что столбец не распознается вне подзапроса; с другой стороны, мне не разрешается использовать другой оператор FROM для указания имени таблицы, которую я хочу использовать (и в этом нет необходимости, потому что такой оператор From Имя_таблицы уже находится внутри подзапроса, из которого мне нужно извлечь столбец, верно?).


Что я уже пробовал:

SELECT Day(MyDate) AS MyDate
 FROM
 (
  SELECT
       TOP(10) 
       COUNT(*) AS 'total',
       day(myDate) AS 'myDay'  
  FROM tableName 
  GROUP BY Day(MyDate)
  ORDER BY 'total' 
  ) AS MyDate


Error: Invalid column name  'MyDate'

Gerry Schmitz

Ты изменил его на "мой день".

xhon

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

1 Ответов

Рейтинг:
9

Richard Deeming

Ваш подзапрос возвращает два столбца: myDay и total.

Нет никакого столбца под названием MyDate чтобы получить доступ в вашем внешнем запросе.

Попробуй:

SELECT T.myDay, T.total
FROM
(
    SELECT TOP(10) COUNT(*) AS 'total', day(myDate) AS 'myDay'  
    FROM tableName 
    GROUP BY Day(MyDate)
    ORDER BY 'total' 
) As T
Однако в этом случае внешний запрос вам вообще не нужен:
SELECT TOP(10) COUNT(*) AS 'total', day(myDate) AS 'myDay'  
FROM tableName 
GROUP BY Day(MyDate)
ORDER BY 'total'