Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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 尝试使用with语句提取唯一值_Sql_Sql Server_Common Table Expression - Fatal编程技术网

Sql 尝试使用with语句提取唯一值

Sql 尝试使用with语句提取唯一值,sql,sql-server,common-table-expression,Sql,Sql Server,Common Table Expression,我创建了一个直截了当的表格,但想合并一个with操作符,从中提取独特的“脉冲”。这是我数据库中的一个标签。我尝试了下面的方法,但出现未知错误 错误: 09:58:45开始在第1行Msg 8115第16级状态2执行查询, 第3行算术溢出将表达式转换为数据类型时出错 int.警告:空值由聚合或其他集合消除 活动总执行时间:00:00:22.736 我肯定我用错了。非常感谢您的指导。我最初将此作为评论,但我确信这是必要的答案 要么: 您将总和应用于非数字列,这会导致只能通过数据清理来解决的问题 您的b

我创建了一个直截了当的表格,但想合并一个with操作符,从中提取独特的“脉冲”。这是我数据库中的一个标签。我尝试了下面的方法,但出现未知错误

错误:

09:58:45开始在第1行Msg 8115第16级状态2执行查询, 第3行算术溢出将表达式转换为数据类型时出错 int.警告:空值由聚合或其他集合消除 活动总执行时间:00:00:22.736


我肯定我用错了。非常感谢您的指导。

我最初将此作为评论,但我确信这是必要的答案

要么:

您将总和应用于非数字列,这会导致只能通过数据清理来解决的问题

您的b.creative_id列不是int数据类型,并且与您和b.creative_id创建的隐式转换冲突。creative_id不为null且b.creative_id 0与int值0的比较。这可以通过使用“0”进行修正

或者,总和的总值大于int数据类型可以处理的2147483647。要解决此问题,请先将int值转换为bigint值,然后再将其传递给sum,以便sum返回可以保存结果值的bigint数据类型:

,sum(cast(a.impressions as bigint)) as cpi_imps
,sum(cast(a.clicks as bigint)) as cpi_clicks

您似乎正在为数据库创建大量工作,最终只需选择distinctpulse即可放弃这些工作。我认为您应该根据join和where子句选择您需要的内容。意思是你的总和、最大值、平均值和distinctb.creative\u id似乎没有必要。与你的问题无关,但是:distinct不是一个函数。它始终适用于“选择”列表中的所有列。用括号括住其中一列不会改变任何东西,也没有用。distinct a,b,c与distinct a,b,c或distinct a,b,c或distinct a,b相同,请确保与整数值进行比较的列(如creative_id)实际上是两个表中的整列?谢谢您对distinct运算符的说明。我没有意识到这一点!这就成功了,CPI上的bigint转换解决了问题。谢谢大家。@MichaelCampbell为了让其他SO用户受益,如果它解决了您的问题,请将此标记为答案。
,sum(cast(a.impressions as bigint)) as cpi_imps
,sum(cast(a.clicks as bigint)) as cpi_clicks