Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL COALESCE返回超过1个值或替代解决方案_Sql Server - Fatal编程技术网

Sql server SQL COALESCE返回超过1个值或替代解决方案

Sql server SQL COALESCE返回超过1个值或替代解决方案,sql-server,Sql Server,帖子被修改了 我需要以下WHERE条件的帮助: ID 1属于工程部 ID 2属于销售部门 ID 3属于其他部门 ID 4属于Eng-Level2部门 ID 5属于Eng-Level3部门 ID 6属于Eng-Level4部门 我试图完成的是,如果ID1日志运行此报告,它将显示属于他的活动ID1,以及Eng Levelx ID4、ID5和ID6。但是,如果ID属于其他部门ID 2和3,则只向其显示以下活动 以下是我的非工作查询: SELECT * FROM dbo.CRM_Activity WHE

帖子被修改了

我需要以下WHERE条件的帮助:

ID 1属于工程部

ID 2属于销售部门

ID 3属于其他部门

ID 4属于Eng-Level2部门

ID 5属于Eng-Level3部门

ID 6属于Eng-Level4部门

我试图完成的是,如果ID1日志运行此报告,它将显示属于他的活动ID1,以及Eng Levelx ID4、ID5和ID6。但是,如果ID属于其他部门ID 2和3,则只向其显示以下活动

以下是我的非工作查询:

SELECT * FROM dbo.CRM_Activity
WHERE 
(ActivityOwnerID = 1579
AND [Status] = 'Open'
AND Status <> 'Deleted')
OR
    ActivityOwnerID IN (
        SELECT COALESCE(
            (SELECT Tech_ID FROM dbo.employee WHERE tech_ID = 1579 and POSITION = 'Engineering')
            ,  (SELECT Tech_ID FROM dbo.employee WHERE LEFT(first_name, 4) = 'Eng-')  --- THIS ONE FAILED BECAUSE IT RETURNS MULTIPLE RECORDS
        )
    )
    AND [Status] = 'Open'

ORDER BY CreatedDate DESC
您可以只使用UNION,因此这将从两个查询中获得唯一的技术ID列表

SELECT * FROM dbo.CRM_Activity
WHERE 
    ActivityOwnerID IN (

            SELECT Tech_ID FROM dbo.employee WHERE tech_ID = 1579 and POSITION = 'Engineering'
            UNION
            SELECT Tech_ID FROM dbo.employee WHERE LEFT(first_name, 4) = 'Eng-'
        )

在您的情况下,选择“合并…”。。。。可以返回多个值,因为IN允许多个值,但从dbo中选择Tech_ID的结果。其中Tech_ID=1579,POSITION='Engineering'左右的employee必须是一个,因为COALESCE期望表达式不是结果集。

@christiandev,感谢您的响应,这不是我希望得到的结果。我现在正在修改这些问题,以便更清楚。。。。我的道歉!我修改了帖子,请你帮忙。谢谢大家!@milacay我怀疑它应该是LEFTposition,4='Eng-'而不是我使用的LEFTfirst_name存在,现在可以使用了。谢谢大家的帮助。