Получение отличного значения через 2 таблицы SQL-сервера объединения

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

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

Это - то, что я попробовал (SQL-сервер выражают 2008),

select 
    count(Distinct ColumnA) 
from 
( 
    select Distinct ColumnA as ColumnA from tableX where x = y
    union
    select Distinct ColumnA as ColumnA from tableY where y=z
)
13
задан afuzzyllama 17 June 2013 в 18:56
поделиться

2 ответа

SELECT COUNT(distinct tmp.ColumnA) FROM ( (SELECT ColumnA FROM TableX WHERE x=y) 
UNION (SELECT ColumnA FROM TableY WHERE y=z) ) as tmp

Дополнительные различия в TableX и TableY не нужны; они будут удалены в предложении tmp.ColumnA. Объявление временной таблицы должно устранить двусмысленность, которая могла помешать выполнению вашего запроса.

21
ответ дан 1 December 2019 в 19:02
поделиться
SELECT COUNT(*)
FROM
(
SELECT DISTINCT ColumnA From TableX WHERE x = y
UNION
SELECT DISTINCT ColumnA From TableY WHERE y = z
) t

Использование «UNION» не вернет дубликаты. Если вы использовали "UNION ALL", то ДОЛЖНЫ быть возвращены повторяющиеся значения ColumnA из каждой таблицы.

15
ответ дан 1 December 2019 в 19:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: