Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 - Fatal编程技术网

Sql 子查询聚合问题

Sql 子查询聚合问题,sql,sql-server,Sql,Sql Server,有以下查询的问题: SELECT * FROM [projectuser].[dbo].[newdataset] WHERE ( Datediff(s, '1970-01-01 00:00:00', Max(dob)) ) >= (SELECT Datediff(s, '1970-01-01 00:00:00', Max(dob)) - 3600 FROM [projectuser].[dbo].[sqlquries7]) OR

有以下查询的问题:

SELECT * 
FROM   [projectuser].[dbo].[newdataset] 
WHERE  ( Datediff(s, '1970-01-01 00:00:00', Max(dob)) ) 
       >= 
       (SELECT Datediff(s, '1970-01-01 00:00:00', Max(dob)) - 3600 
        FROM [projectuser].[dbo].[sqlquries7]) 
ORDER  BY dob 
错误消息:

除非是在一个集合中,否则集合不能出现在WHERE子句中 HAVING子句或select列表中包含的子查询,以及列 聚合是一个外部引用

基于更改数据捕获,尝试从当前最大日期目标中选择1小时记录源,该目标位于将日期时间转换为历元的历元日期时间中。外部查询将是源,内部查询是目标 请帮帮我。
谢谢你重新考虑你的问题。您有一个来自外部源的计算值和一个来自内部源的计算值。您使用的是不带GROUP BY的MAX,表示要比较每个表中的单个值。如果值DateDiff为'1970-01-01 00:00:00',Maxdob大于从[projectuser].[dbo].[sqlquries7]选择DateDiff'1970-01-01 00:00:00',Maxdob-3600返回的值,则将返回[projectuser].[dbo].[newdataset]中的所有行

也就是说,如果您现有的逻辑起作用

因此,你首先需要做的是定义你真正想要的是什么。这应该包括您要查找的行,即新数据集中的所有行,其中dob位于从sqlqueries表计算的值之后

请注意,使用sqlqueries表中单个值的方法是将结果放入变量中,例如:

DECLARE @mdob datetime
SELECT @mdob = Datediff(s, '1970-01-01 00:00:00', Max(dob)) - 3600 
        FROM [projectuser].[dbo].[sqlquries7]
或使用单个值创建派生表,并将其交叉连接到其他记录集,例如:

SELECT * 
FROM   [projectuser].[dbo].[newdataset] nds
CROSS JOIN (
    SELECT Datediff(s, '1970-01-01 00:00:00', Max(dob)) - 3600 AS Cutoff
    FROM [projectuser].[dbo].[sqlquries7]) as Tbl
WHERE  ( Datediff(s, '1970-01-01 00:00:00', dob) ) >= Cutoff

但请记住,WHERE子句中的-MAX或MIN、SUM等是不允许的,除非是在特定的、狭义的情况下。如果您需要WHERE子句中的最大值,则必须在其他地方计算它。

您在这里想做什么?为什么在datediff中有Maxdob?错误消息的哪一部分不清楚?where子句中不能有聚合。提示…MAX.update您的问题添加适当的数据样本和预期结果。请查找。对不起,你的问题没有任何意义。我认为您需要发布样本数据和期望的结果,以尽可能清楚地说明这一点。