2012-08-09 3 views
0

나는 15 개의 테이블을 가지고 있으며, 모두 CreationDate와 LastModifiedDate 컬럼을 가지고 있습니다. 모든 테이블을 쿼리하고 테이블에서 null 값을 찾는 방법이 있습니다. SQL 같은 열을 가진 여러 테이블을 쿼리하십시오.

내가해야 할 생각하고 있지만,보다 효율적인 방법 또는 다음

Select COUNT(*) FROM Table1, Table2, Table3 
WHERE table1.CreationDate IS NULL 
     OR table1.LastModifiedDate IS NULL 
     OR table2.CreationDate IS NULL 
     OR table2.LastModifiedDate IS NULL 
     OR table3.CreationDate IS NULL 
     OR table3.LastModifiedDate IS NULL 

답변

3
select count(*) 
from (
    select CreationDate, LastModifiedDate from Table1 
    union all 
    select CreationDate, LastModifiedDate from Table2 
    union all 
    select CreationDate, LastModifiedDate from Table3 
) a 
where CreationDate is null or LastModifiedDate is null 
+0

매우 영리한 - 하나에 하나! –

+0

대단히 감사합니다. –

+0

GETDATE()에 null 인 시간을 쉽게 업데이트 할 수 있습니까? –

0

당신은 원래 쿼리 당신이 무엇을 기대하지 않습니다 할 수있는 쉬운 방법이 있는지 궁금 해서요 것입니다 . 누락 된 값이있는 모든 행에서 교차 조인을 수행합니다. 이로 인해 많은 테이블에 여러 행이있는 경우 많은 양의 데이터가 생성되거나 행이 누락 된 테이블이없는 경우에는 전혀 데이터가 생성되지 않을 수 있습니다. 일이없는 곳

난 당신이 테이블 이름을 알고 싶어한다고 가정

select tablename, count(*), 
     sum(case when CreationDate is null then 1 else 0 end) as MissingCreationDate, 
     sum(case when LastModifiedDate is null then 1 else 0 end) as MissingLastModifiedDate 
from ((select 'table1' as tablename, CreationDate, LastModifiedDate 
     from Table1 
    ) union all 
     (select 'table2' as tablename, CreationDate, LastModifiedDate 
     from Table2 
    ) union all 
     . . . 
     (select 'table15', CreationDate, LastModifiedDate 
     from Table3 
    ) 
    ) t 
where CreationDate is null or LastModifiedDate is null 
group by tablename 
관련 문제