Sql 内部联接的多个表上的搜索条件

Sql 内部联接的多个表上的搜索条件,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有三张桌子: 客户 +-----------+-------------------------+-------------+ | Client ID | Created | Client Type | +-----------+-------------------------+-------------+ | 1 | 2020-09-26 17:08:10.000 | Case | +-----------+----------

我有三张桌子:

客户

+-----------+-------------------------+-------------+
| Client ID | Created                 | Client Type |
+-----------+-------------------------+-------------+
| 1         | 2020-09-26 17:08:10.000 | Case        |
+-----------+-------------------------+-------------+
| 2         | 2020-09-26 17:08:11.000 | Case        |
+-----------+-------------------------+-------------+
| 3         | 2020-09-26 17:08:11.000 | Case        |
+-----------+-------------------------+-------------+
| 4         | 2020-09-26 17:08:11.000 | Case        |
+-----------+-------------------------+-------------+
| 7         | 2020-09-27 21:10:14.000 | Case        |
+-----------+-------------------------+-------------+
评估

+--------------------------------------+-------------------------+-----------+-----------------+
| Assessment ID                        | Created                 | Client ID | Assessment Type |
+--------------------------------------+-------------------------+-----------+-----------------+
| b2b200ec-9725-eb11-a813-00224808102a | 2020-11-13 10:06:49.000 | 6         | Monitoring      |
+--------------------------------------+-------------------------+-----------+-----------------+
| 5cb200ec-9725-eb11-a813-00224808102a | 2020-11-13 10:06:47.000 | 1         | Monitoring      |
+--------------------------------------+-------------------------+-----------+-----------------+
| 1ab200ec-9725-eb11-a813-00224808102a | 2020-11-13 10:06:45.000 | 2         | Monitoring      |
+--------------------------------------+-------------------------+-----------+-----------------+
| c2b100ec-9725-eb11-a813-00224808102a | 2020-11-13 10:06:42.000 | 3         | Monitoring      |
+--------------------------------------+-------------------------+-----------+-----------------+
| 77b100ec-9725-eb11-a813-00224808102a | 2020-11-13 10:06:41.000 | 5         | Monitoring      |
+--------------------------------------+-------------------------+-----------+-----------------+
电话

+--------------------------------------+-------------------------+-----------+
| Phone Call ID                        | Created                 | Client ID |
+--------------------------------------+-------------------------+-----------+
| 34910860-fdd7-ea11-a813-000d3a5a11b0 | 2020-08-06 15:56:27.000 | 0         |
+--------------------------------------+-------------------------+-----------+
| 5a64b658-fdd7-ea11-a813-000d3a5a11b0 | 2020-08-06 15:56:16.000 | 9         |
+--------------------------------------+-------------------------+-----------+
| 9a543238-fdd7-ea11-a813-000d3a5a11b0 | 2020-08-06 15:55:21.000 | 2         |
+--------------------------------------+-------------------------+-----------+
| 2bd93432-fdd7-ea11-a813-000d3a5a11b0 | 2020-08-06 15:55:15.000 | 1         |
+--------------------------------------+-------------------------+-----------+
| e11c73f8-fcd7-ea11-a813-000d3a5a11b0 | 2020-08-06 15:53:36.000 | 8         |
+--------------------------------------+-------------------------+-----------+
我想创建一个查询,在该查询中,我在过去24小时内只收到电话,客户=案例和评估=监控

我的查询不起作用——它只收到案例客户和监控评估,但它只收到最近24小时的电话。我做错了什么?我真的很感谢你的帮助

SELECT p.[Client ID], COUNT(p.[Phone Call ID]) AS [Phone Calls]
--INTO ##monitoringCasesInterviewAttempts
FROM dbo.vPhonecalls AS p
    INNER JOIN dbo.vAssessments AS a ON (p.[Client ID] = a.[Client ID])
    INNER JOIN dbo.vClients AS c ON (p.[Client ID] = c.[Client ID])
WHERE p.Created >= DATEADD(day, -1, GETDATE())
    AND a.[Assessment Type] = 'Monitoring'
    AND c.[Client Type] = 'Case'
GROUP BY p.[Client ID]
GO
我试图创建一个临时表,其中只包含下面最后24小时内的电话,而上面的查询仍然获取所有电话。我使用计数或分组的方式是否有问题

SELECT [Phone Call ID], Created, [Client ID]
INTO ##todaysPhoneCalls
FROM dbo.vPhonecalls
WHERE Created >= DATEADD(day, -1, GETDATE())
ORDER BY Created
我将使您的WHERE子句如下所示:

WHERE p.Created >= DATEADD(day, -1, GETDATE())
    AND a.[Assessment Type] = 'Monitoring'
    AND c.[Client Type] = 'Case'
您可以运行此选择:

select DATEADD(day, -1, GETDATE())

看看这是什么。基本上,它会为您提供24小时前的时间戳。

尝试在Where子句中使用between。。。并将较早的日期置于当前日期之前。您知道您正在检查电话创建日期,该日期看起来是在8月份,您不会收到任何点击。谢谢@SS_DBA,但我只显示了前五名的结果。我已经确定过去24小时内有几行,你让我想创建一个临时表,其中包括两个问题:1.电话和评估表中的日期之间有什么关系?你能提供一个查询及其结果的例子吗?在定义的窗口之外接到呼叫看起来非常奇怪。由于您仅从Calls表中选择列,请注释掉内部联接和两个and,然后查看您是否仍在不应获取的时间窗口之外获取记录。请阅读以获取有关改进问题的一些提示。创建一个演示问题的工作示例(例如at或)会有所帮助。请记住在摆弄时选择SQL Server。使用适当的值代替GetDate,例如将@Now声明为DateTime='2020-11-13T12:00:00';,因此,无论何时执行样本,问题都会发生。谢谢Casey。当我运行selectdateaddday,-1,GETDATE时,它会得到最后24小时。遗憾的是,尽管查询仍然不起作用,它仍然会收到所有的电话。我做了另一张表格,只列出了今天的电话,然后在上面的查询中尝试了这一点,但仍然不起作用。在一张没有查询的桌子上计算电话是怎么回事?我的计数或分组错误吗?选择[Phone Call ID],Created,[Client ID]-进入Today从dbo.vPhonecalls呼叫,其中Created>=DATEADDday,-1,GETDATE ORDER BY Created你说这个查询:SELECT*FROM vPhonecalls,其中Created>=DATEADDday,-1,GETDATE获得所有呼叫,即使是那些超过24小时的呼叫?另外,vPhonecalls是视图还是表?这就是问题所在,上面的SELECT语句确实有效!哈哈。vPhonecalls是一个视图我在这里迷路了。我不确定你的问题是什么。另外,除非你有很好的理由使用视图,而你可能不这样做,否则我不会使用它们。再次感谢!我真的很感谢你的帮助。我很高兴语法是正确的。我将再次尝试使用表并向您报告