Как я могу объединить две таблицы псевдонимов из запроса выбора

#sql-server

#sql-server

Вопрос:

Я новичок в MSSQL, я пытаюсь объединить две таблицы псевдонимов, созданные из запроса SELECT, следующим образом

 SELECT COUNT(T1.A1) AS [count],T1.A2 AS [Cname] FROM (
SELECT A1.Column1,A1.Column2
FROM A1
) T1
GROUP By T1.A1
  

И у меня есть другая таблица, например

 SELECT COUNT(T2.A2) AS [count],T2.A2 AS [Cname] FROM (
SELECT A2.Column1,A2.Column2
FROM A2
) T2
GROUP By T2.A2
  

Я хочу получить такой результат:

 |   Cname  |T1.Count  | T2.Count |
|Column1   |   7      |  7       |
|Column2   |   9      |  7       |
  

Я пробовал с некоторым объединением, но получаю недопустимый объект T1. может ли кто-нибудь подсказать мне, как мне получить таблицу результатов, любая небольшая помощь приветствуется.

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

1. Покажите, что вы пробовали с joins и процитируйте ошибку, оба дословно.

2. Ваш первый запрос является недопустимым синтаксисом в качестве отдельного запроса — что-то, что вы пропустили. Это также кажется слишком сложным, но это предположение, поскольку оно недействительно. Производная таблица t1 имеет столбцы с именами Column1 и Column2 — вы не можете ссылаться на столбцы A1 или A2 во внешнем запросе. Вы также не можете включить A2 в результирующий набор, не добавив его в предложение group by или не используя его с агрегатом. Производная таблица представляет собой простой select, поэтому нет причин использовать ее вообще, что является чрезмерно сложным аспектом.

Ответ №1:

Вы пробовали a UNION ALL ? Что-то вроде этого:

 SELECT COUNT(a.C2), a.C1
FROM (
SELECT A1.Column1 as C1, A1.Column2 as C2
FROM A1
UNION ALL 
SELECT A2.Column1 as C1, A2.Column2 as C2
FROM A2) a
GROUP BY a.C1