如果复杂的SQL查询在另一个视图中不存在,则需要添加一行

如果复杂的SQL查询在另一个视图中不存在,则需要添加一行,sql,Sql,我有一个相当复杂的观点。该查询从大约14个表中提取数据,其中还涉及一个子查询。结果如下: [唯一标识符][办公室][编号][说明][价值][客户][斯特霍比] 现在,此信息从名为ViewTeamMembers的视图中提取。ViewTeamMembers视图将根据唯一标识符返回所有团队成员。有时有团队成员,但没有所有者。我需要我的查询来从ViewTeamMembers中提取数据,目前正在这样做,并检查是否有所有者。如果没有所有者,我需要在结果集中插入一行,其中所有者名称不会被分配,所有其他数据都将

我有一个相当复杂的观点。该查询从大约14个表中提取数据,其中还涉及一个子查询。结果如下: [唯一标识符][办公室][编号][说明][价值][客户][斯特霍比]

现在,此信息从名为ViewTeamMembers的视图中提取。ViewTeamMembers视图将根据唯一标识符返回所有团队成员。有时有团队成员,但没有所有者。我需要我的查询来从ViewTeamMembers中提取数据,目前正在这样做,并检查是否有所有者。如果没有所有者,我需要在结果集中插入一行,其中所有者名称不会被分配,所有其他数据都将由其他团队成员的数据填充。我怎样才能做到这一点

例如:

ViewTeamMembers
[unique123][Office1][555-5555][description][1,000][Frank][hourly]
[unique123][Office1][555-5555][description][1,000][Tom][Salary]
[unique123][Office1][555-5555][description][1,000][Brent][Hourly]
我需要对此进行查询,看看是否有一行存在具有jobid所有者的人,如果没有,我需要将自己的行插入到具有

[unique123][Office1][555-5555][description][1,000][Not Assigned][Owner]
因此,当我查看查询结果集时,我应该

[unique123][Office1][555-5555][description][1,000][Frank][hourly]
[unique123][Office1][555-5555][description][1,000][Tom][Salary]
[unique123][Office1][555-5555][description][1,000][Brent][Hourly]
[unique123][Office1][555-5555][description][1,000][Not Assigned][Owner]
这是我的加入

左外连接 dbo.viewteammembers.guidrequirementid=dbo.tblrequirements.guidrequirementid上的dbo.viewteammembers

我会假设我必须这样做:

select * from viewteammembers case when not exists(select * from viewteammebers where strjobid = 'Owner') then 
但我不知道是什么语法使它起作用


谢谢

如果我正确理解了您的请求,您有一个要添加的内容表,您想删除其中的一些内容

以下查询结构实现了这一点:

with toadd (
    select *
    from <things to add> tad
    where tad.guidrequirementid not in (select guidrequirementid from <view>)
)
insert into <final table>
    select * from toadd

如果我正确理解了您的请求,那么您有一个要添加的内容表,并且希望删除其中的一些内容

以下查询结构实现了这一点:

with toadd (
    select *
    from <things to add> tad
    where tad.guidrequirementid not in (select guidrequirementid from <view>)
)
insert into <final table>
    select * from toadd

根据您使用的数据库类型,可能有更好的方法来实现这一点,但类似的方法应该可以做到这一点

   -- get dummy rows for all distinct identifiers that don't already have an owner
    select 
       distinct [Unique Identifier], [office], [number], [description], 
       1 as value, 
       'Not Assigned' as Customer, 
       'Owner' as strjobid from ViewTeamMembers vtm
    where 
       not exists (select 1 from ViewTeamMembers vtm2 
                   where vtm2.[Unique Identifier] = vtm.[Unique Identifier] 
                   and StrJobId = 'Owner')
    union all -- add everything already there
    select 
       [Unique Identifier], [office], [number], [description],
       [value], [customer], [strjobid]
    from ViewTeamMembers

根据您使用的数据库类型,可能有更好的方法来实现这一点,但类似的方法应该可以做到这一点

   -- get dummy rows for all distinct identifiers that don't already have an owner
    select 
       distinct [Unique Identifier], [office], [number], [description], 
       1 as value, 
       'Not Assigned' as Customer, 
       'Owner' as strjobid from ViewTeamMembers vtm
    where 
       not exists (select 1 from ViewTeamMembers vtm2 
                   where vtm2.[Unique Identifier] = vtm.[Unique Identifier] 
                   and StrJobId = 'Owner')
    union all -- add everything already there
    select 
       [Unique Identifier], [office], [number], [description],
       [value], [customer], [strjobid]
    from ViewTeamMembers