Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 如何检查数据库中每个用户是否存在行值_Sql_Sql Server_If Statement_Exists - Fatal编程技术网

Sql 如何检查数据库中每个用户是否存在行值

Sql 如何检查数据库中每个用户是否存在行值,sql,sql-server,if-statement,exists,Sql,Sql Server,If Statement,Exists,我正在创建一个跟踪客户联系的数据库,初始联系的目标联系日期是从客户第一次呼叫我们的日期起90个工作日,我创建了一个函数来处理此计算 我有一个客户联系人记录表,所有联系人都输入到该表中 我在mssql2005中设置了一个邮件脚本,当90天后没有联系或输入日志时,它会将列表发送到经理的邮箱 我正在与sql进行斗争,以确定是否不存在任何联系人,或者是否存在联系人但被违反,请查看下面的脚本: 我试图使它尽可能可读 DECLARE @tmp INT SELECT m.id

我正在创建一个跟踪客户联系的数据库,初始联系的目标联系日期是从客户第一次呼叫我们的日期起90个工作日,我创建了一个函数来处理此计算

我有一个客户联系人记录表,所有联系人都输入到该表中

我在mssql2005中设置了一个邮件脚本,当90天后没有联系或输入日志时,它会将列表发送到经理的邮箱

我正在与sql进行斗争,以确定是否不存在任何联系人,或者是否存在联系人但被违反,请查看下面的脚本:

我试图使它尽可能可读

DECLARE @tmp INT 

SELECT m.id                                                          AS 
       [Case ID], 
       CONVERT(VARCHAR, userdbjhv25.dbo.Calcdate(oc.firstdate), 103) AS 
       [Target Contact Date] 
FROM   userdbjhv25.dbo.USER v, 
       userdbjhv25.dbo.customer o, 
       userdbjhv25.dbo.maincase m, 
       userdbjhv25.dbo.usercase vc, 
       userdbjhv25.dbo.customercase oc, 
       contactlist r 
WHERE  m.id = vc.caseid 
       AND v.userid = vc.userid 
       AND m.id = oc.caseid 
       AND o.customerid = oc.customerid 
       AND userdbjhv25.dbo.Calcdate(oc.firstdate) <= Getdate() 
       AND ( @tmp IS NOT NULL 
             AND NOT EXISTS (SELECT 1 
                             FROM   contactlist r1 
                             WHERE  r1.caseno = vc.usercase 
                                    AND r1.conlogtype = 'Initial Contact') 
              OR (( @tmp IN(SELECT 1 
                            FROM   contactlist r2, 
                                   usercase vc2, 
                                   USER v2, 
                                   customercase oc2, 
                                   maincase m2, 
                                   customer o2 
                            WHERE  m2.id = oc2.caseid 
                                   AND o2.customerid = oc2.customerid 
                                   AND r2.conlogtype = 'Initial Contact' 
                                   AND r2.caseno = vc.usercase 
                                   AND 
                           userdbjhv25.dbo.Calcdate(oc2.firstdate) < r2.postdate 
                           ) 
                  )) ) 

我想一个左撇子会是你在这里的朋友。我无法充分可视化您的模式,但左连接或右连接背后的想法是数据可能不存在于其中一个数据集中。发生这种情况时,将返回一行null。但当它确实匹配时,您将返回匹配的数据。因此,一些psedo代码:

select m.id  AS [Case ID], 
       CONVERT(VARCHAR, userdbjhv25.dbo.Calcdate(oc.firstdate), 103) AS [Target Contact Date]
from userdbjhv25.dbo.customer o
left join userdbjhv25.dbo.customercase oc
    on o.customerid = oc.customerid
where oc.firstdate is null or datediff(day, oc.firstdate, getdate()) > 90
根据您的模式进行调整,您就可以开始了。

是您的朋友。