SELECT
ステートメントのWHERE
に対して、SQL Server 2008 R2のストアドプロシージャで条件付きNOT IN
句を使用できますか?私はに基づいてそのWHERE
句の条件NOT IN
でEmployee
テーブルの上にSELECT
を行う必要がありSELECT WHERE内の条件付きNOT句
CREATE TABLE [dbo].[Employee](
[employeeID] [int] IDENTITY(9500,1) NOT NULL,
[firstName] [nvarchar](50) NOT NULL,
[middleName] [nvarchar](50) NULL,
[lastName] [nvarchar](50) NOT NULL,
[suffix] [nvarchar](50) NULL,
[createdDate] [datetime] NOT NULL CONSTRAINT [DF_Employee_createdDate] DEFAULT (getdate()),
CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED
(
[employeeID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[TestingA](
[testingA_ID] [int] IDENTITY(1,1) NOT NULL,
[employeeID] [int] NOT NULL,
[isComplete] [bit] NULL CONSTRAINT [DF_TestingA_isComplete] DEFAULT ((0)),
[createdDate] [datetime] NOT NULL CONSTRAINT [DF_TestingA_createdDate] DEFAULT (getdate()),
CONSTRAINT [PK_TestingA] PRIMARY KEY CLUSTERED
(
[testingA_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[TestingB](
[testingB_ID] [int] IDENTITY(1,1) NOT NULL,
[employeeID] [int] NOT NULL,
[isComplete] [bit] NULL CONSTRAINT [DF_TestingB_isComplete] DEFAULT ((0)),
[createdDate] [datetime] NOT NULL CONSTRAINT [DF_TestingB_createdDate] DEFAULT (getdate()),
CONSTRAINT [PK_TestingB] PRIMARY KEY CLUSTERED
(
[testingB_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
:私はemployeeID
は外国TestingA
でキーとTestingB
である3つのテーブル、Employee
、TestingA
、およびTestingB
を、持っていますストアドプロシージャの入力パラメータ:@Type
の値に基づいて
@Type nvarchar(50)
は、私がをしたいです210 TestingA
またはTestingB
である。したがって、これは次のようなものです。
select e.employeeId from Employee e
where
-- If @Type = 'TestingA' Then
-- e.employeeID NOT IN (select ta.employeeID from TestingA ta)
-- End
-- Else
-- e.employeeID NOT IN (select tb.employeeID from TestingB ta)
-- End
Transact-SQLではどうすればよいですか?ありがとう。
http:// stackoverf low.com/questions/337704/parameterize-an-sql-in-clause – Ako