SQL SERVER 从 If Exists 中选择多个字段
Posted
技术标签:
【中文标题】SQL SERVER 从 If Exists 中选择多个字段【英文标题】:SQL SERVER Select multiple fields from If Exists 【发布时间】:2017-06-28 18:04:15 【问题描述】:我必须做一个SQL Server Statement
,它必须在为空时返回一个空行,否则返回数据。
我正在尝试从(如果存在)进行选择,但在父表上出现错误。
我简化它。但意思是,条件为空时检索几个字段,不为空时检索其他字段。
当我不在另一个选择中关闭它时它工作正常....我需要将它作为一个表检索以与其他 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】:您应该尝试将数据插入到临时表或表变量中,然后从该表中获取数据,这是一个带有表变量的示例,如果您需要更持久的东西,您可以使用#Temp 表,我推荐你看看这个: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
【讨论】:
在comparison 中添加 CTE、表变量和临时表会很有趣以上是关于SQL SERVER 从 If Exists 中选择多个字段的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server - 如何创建 IF EXISTS...SELECT AND SELECT
SQL Server 2008 仅从字段中选择日期 [重复]