SQL SERVER从If Exists

时间:2017-06-28 18:04:16

标签: sql-server select exists

我必须做一个SQL Server Statement,当null为空时必须返回一个空行,而其他数据则必须返回空行。

我正在尝试从(如果是exisits)中选择,但在父表上有错误。

我简化它。但其含义是在条件为空时检索几个字段,在非空时检索其他字段。

当我没有将它隐藏在另一个选择中时它工作正常....我需要将其作为一个表来检索它以与其他clouse进行内部联接。

我该如何解决?

这是我的代码..

select * from
	(
       if exists(select isnull(SECTOR_ID_DESTINO_BAD,-1) 
			from workflow_Compras_detalle w
			where w.id=2)
			begin		
			    select null as Sector,null as sector_id_origen
			end
			else
			begin
				select top 1 isnull(ws.sector,'') sector,  wd.sector_id_origen
				from workflow_Compras_detalle wd 
				where orden <	10
		     end 
	)Table

1 个答案:

答案 0 :(得分:1)

您应该尝试将数据插入临时表或表变量,然后从该表中获取数据,这是一个带有表变量的示例,如果您需要更持久的东西,可以使用#Temp表,i建议你看一下:difference between var table and #Temp Table

    DECLARE @VAR_TABLE AS TABLE(
Sector varchar(25),
sector_id_origen int
)

if exists(select isnull(SECTOR_ID_DESTINO_BAD,-1) 
            from workflow_Compras_detalle w
            where w.id=2)
    begin       
                INSERT INTO @VAR_TABLE
                Select null as Sector,null as sector_id_origen 
    End
Else
    begin

        INSERT INTO @VAR_TABLE
        select top 1 isnull(ws.sector,'') sector,  wd.sector_id_origen
        from workflow_Compras_detalle wd 
        where orden <   10
End 

SELECT * FROM @VAR_TABLE