2012-08-22 2 views
0

다음 쿼리가 있습니다.테이블 변수 및 SQL Server에서 Null 확인

CREATE TYPE [dbo].[DeptIdList] AS TABLE(
    [DepartmentId] [smallint] NULL 
) 
GO 
set nocount on 

declare @department_ids DeptIdList 
declare @tableContainsRecords int = 0 

insert into @department_ids 
values 
(5), (6), (7), (8), (9) 

select d.DepartmentID, d.Name, d.GroupName 
    from HumanResources.Department as d 
    right outer join @department_ids as di on 
    d.DepartmentID = di.DepartmentID 

@department_ids에 행이 포함되어 있으면 특정 부서를 선택하고 싶습니다. 그렇지 않으면 SELECT 부서 테이블에 모든 레코드를 반환해야합니다.

이렇게하는 가장 쉬운 방법은 무엇입니까?

답변

1

이 작동합니다 :

SELECT d.DepartmentID, d.Name, d.GroupName 
FROM HumanResources.Department d 
WHERE DepartmentID IN (SELECT DepartmentID FROM @department_ids) 
OR (SELECT COUNT(*) FROM @department_ids) = 0 
관련 문제