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

SQL将计算列添加到表中

SQL将计算列添加到表中,sql,excel,alter,ms-query,Sql,Excel,Alter,Ms Query,我不擅长SQL,但我正在使用Microsoft Query从旧表创建一个新表,并添加一个新列(计算列) 我的计算查询来自同一个表。我基本上想从一年前的同一天检索一个美元数字,并提供一个计算字段,该字段按帐户给出了同比增长。除日期外,每个帐户都有几列唯一的数据 我认为某种类型的查询声明x、y和z列匹配,但也包括日期列-364 如果你能帮忙,我将不胜感激 谢谢, Mike假设您的accountTotals在同一个表中,您可以将该表连接到它本身,并在WHERE子句中指定不同的日期。查询应如下所示: S

我不擅长SQL,但我正在使用Microsoft Query从旧表创建一个新表,并添加一个新列(计算列)

我的计算查询来自同一个表。我基本上想从一年前的同一天检索一个美元数字,并提供一个计算字段,该字段按帐户给出了同比增长。除日期外,每个帐户都有几列唯一的数据

我认为某种类型的查询声明x、y和z列匹配,但也包括日期列-364

如果你能帮忙,我将不胜感激

谢谢,
Mike

假设您的accountTotals在同一个表中,您可以将该表连接到它本身,并在WHERE子句中指定不同的日期。查询应如下所示:

SELECT a.accountingDate, a.accountTotal,
b.accountingDate, b.accountTotal, (b.accountTotal - a.accountTotal) as ChangeInTotal
FROM sourceTbl a
JOIN sourceTbl b on a.x = b.x and a.y = b.y and a.z = b.z
WHERE a.accountingDate = <current year date>
and b.accountingDate = <prior year date>
选择a.accountingDate、a.accountTotal、,
b、 会计日期,b.accountTotal,(b.accountTotal-a.accountTotal)作为变更总计
来源TBL a
在a.x=b.x和a.y=b.y和a.z=b.z上连接sourceTbl b
其中a.accountingDate=
和b.会计日期=

希望这能有所帮助。

在数据库中存储计算列不是最好的做法……最好在需要计算列的时候运行计算,而不要存储计算结果(除非您正在丢失数据并希望存储对时间敏感的聚合)。这里的视图可能也适合您。您使用的是
SQL Server
?@secondary-我相信存储它可能是最好的,但这是一个可能会变大的小数据库表。我只是想向供应商提供一些要求,给他们我想要的最好方法是计算该列。@PM77-1-我使用的是Microsoft Query(查询excel文件中的表格)。啊,k,你从哪里来的?这是针对要求的。如果您要求第三方供应商为您制作此操作,那么您的供应商很可能不会存储此计算,而是使用视图(或某种程度上的内容)让您感觉它在物理上存在,但实际上不存在(如果他们试图存储这些calc d字段,我建议您找到其他供应商)。如果您的数据库表每个日期有一行,并且您所做的只是将上一年的行与本年的数字进行比较,那么用户2065377的答案很可能与您要查找的结果接近。