2012-02-03 4 views
0
select case when exists(
           select top 1 1 
           from dg_world_records wr (nolock) 
           where wr.gametypeid = 4 
           and wr.playerid = 1 
          ) 
    then totaltime = (select min(totaltime) from dg_world_records (nolock) where playerid = 1 and gametypeid = 4) 
    else totaltime = (select max(totaltime) from dg_world_records (nolock) where gametypeid = 4) 
    end 

Я предполагаю, что это невозможно, но я пытаюсь сделать подзадачу в выражении case sql. Это возможно?SQL Case Statement с подзапросом

Я пытаюсь выполнить поиск, основанный на поиске или не находить значение в таблице. Я могу сделать это, разбив заявление, но мне было интересно, можно ли это сделать в одном заявлении.

Вот схема таблицы:

CREATE TABLE [dbo].[DG_WORLD_RECORDS](
[WorldRecordId] [int] IDENTITY(1,1) NOT NULL, 
[GameTypeId] [int] NOT NULL, 
[PlayerId] [int] NOT NULL, 
[NumberOfValues] [int] NOT NULL, 
[TotalTime] [int] NOT NULL, 
[DateOfRecord] [datetime] NOT NULL, 
[GameId] [int] NULL, 
[UTCInserted] [datetime] NOT NULL CONSTRAINT [DF_DG_WORLD_RECORDSII_UTCInserted] DEFAULT (getutcdate()), 
[UTCUpdated] [datetime] NOT NULL CONSTRAINT [DF_DG_WORLD_RECORDSII_UTCUpdated] DEFAULT (getutcdate()), 
[SrvName] [varchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_DG_WORLD_RECORDSII_SrvName] DEFAULT (@@servername), 

CONSTRAINT [PK_DG_WORLD_RECORDS] PRIMARY KEY CLUSTERED ( [WorldRecordId] ASC ) )

ответ

6

Не знаю, почему вы пишете этот сумасшедший запрос , но чтобы ответить на ваш вопрос, да, это можно сделать, просто переместите свое задание из заявления дела:

select totaltime = CAST (
    case when exists(
    select * 
    from dg_world_records wr (nolock) 
    where wr.gametypeid = 4 and wr.playerid = 1) 
    then (select min(totaltime) from dg_world_records (nolock) where playerid = 1 and gametypeid = 4) 
    else (select max(totaltime) from dg_world_records (nolock) where gametypeid = 4) 
    end AS INT) 
+0

Я признаю, что это «сумасшедший запрос». Я просто немного расширил свои навыки SQL. Спасибо за помощь! – codingguy3000

+0

@ codingguy3000 без проблем, рад, что я могу помочь !! –