если строительство в sql - PullRequest
0 голосов
/ 26 марта 2012

Я плохо разбираюсь в t-sql, поэтому мне нужна помощь.

У меня есть этот код, который я написал сам, но как написать, что я хочу, я не знаю (и извините за английский)

declare @questionid int
set @questionid = 22

declare @providerid int
set @providerid = 189

select [closed] into #question from [Data].[dbo].[Question] where [questionid] = @questionid  

-- and here, if [closed] is null I must write in the question table current date GETDATE()
UPDATE [Data].[dbo].[Question] SET [closed] = GETDATE() WHERE [questionid] = @questionid and [providerid] = @providerid

-- or, if [closed] is not null I must write there null
UPDATE [Data].[dbo].[Question] SET [closed] = null WHERE [questionid] = @questionid and [providerid] = @providerid

drop table #question

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Воспользуйтесь case when, вы легко сможете выполнить свою задачу.

UPDATE [Data].[dbo].[Question] 
SET [closed] = CASE
          WHEN [closed]  is null THEN GetDate()
          ELSE null
          END
WHERE [questionid] = @questionid 
   and [providerid] = @providerid 
1 голос
/ 26 марта 2012

Вам не нужна временная таблица для этого

declare @questionid int
set @questionid = 22

declare @providerid int
set @providerid = 189

declare @closed datetime
select @closed = [closed] from [Data].[dbo].[Question] where [questionid] = @questionid  

-- and here, if [closed] is null I must write in the question table current date GETDATE()
IF @closed IS NULL
    UPDATE [Data].[dbo].[Question] SET [closed] = GETDATE() WHERE [questionid] = @questionid and [providerid] = @providerid
ELSE
-- or, if [closed] is not null I must write there null
    UPDATE [Data].[dbo].[Question] SET [closed] = null WHERE [questionid] = @questionid and [providerid] = @providerid

Должен сказать, я не понимаю логику, которую вы пытаетесь достичь ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...