我必须做一个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
答案 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