문제

나는 노조를 사용하여 2 개의 테이블에서 모든 뚜렷한 값을 얻으려고 노력하고 있습니다.

아이디어는 Columna 열에서 반복없이 모든 고유 한 값을 얻는 것입니다. 따라서 고유 한 columna를 포함하는 모든 열의 요약을 얻을 수 있습니다.

이것이 제가 시도한 것입니다 (SQL Server Express 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
)
도움이 되었습니까?

해결책

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 조항에서 벗겨 질 것입니다. 임시 테이블을 선언하면 쿼리가 실행되는 것을 막을 수있는 모호성이 제거되어야합니다.

다른 팁

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 값을 복제합니다.

Union Query에서 뚜렷한 값을 얻으려면 시도해 볼 수 있습니다.

Select distinct AUnion.Name,AUnion.Company from (SELECT Name,Company from table1 UNION SELECT Name,Company from table2)AUnion
SELECT DISTINCT Id, Name
FROM   TableA
UNION ALL
SELECT DISTINCT Id, Name
FROM   TableB
WHERE  TableB.Id NOT IN (SELECT Id FROM TableA)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top