SQL将计算列添加到表中

Posted

技术标签:

【中文标题】SQL将计算列添加到表中【英文标题】:SQL add calculated column to table 【发布时间】:2013-09-23 16:21:23 【问题描述】:

我不精通 SQL,但我正在使用 Microsoft Query 从旧表创建新表并添加新列(计算列)。

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

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

如果您能提供帮助,我将不胜感激。

谢谢, 迈克

【问题讨论】:

将计算列存储在数据库中并不是最好的方法...最好在要计算时运行计算而不存储计算结果(除非您正在丢失数据并且想要存储时间敏感的聚合)。此处的视图可能也适合您。 你在使用SQL Server吗? @Twelfth - 我确信存储它可能是最好的,但这是一个可能会变大的小型数据库表。我只是想向供应商提供一些要求,而给他们我想要的东西的最佳方法是计算该列。 @PM77-1 - 我正在使用 Microsoft Query(查询 excel 文件中的表)。 啊,你从哪里来……这是为了满足要求。如果您要求第 3 方供应商为您做这个,很可能您的供应商不会存储此计算,而只是使用视图(或某种程度的东西)让您感觉它实际存在,但实际上并不存在那里(如果他们尝试存储这些计算字段,我实际上建议寻找不同的供应商)。如果您的数据库表每个日期有 1 行,并且您所做的只是在今年数旁边比较去年行,那么 user2065377 的答案可能与您要查找的内容接近。 【参考方案1】:

假设您的 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>

希望这会有所帮助。

【讨论】:

以上是关于SQL将计算列添加到表中的主要内容,如果未能解决你的问题,请参考以下文章

sql 将分区添加到表中

根据在另一个表中找到的聚合和范围将列添加到表中

根据组内连续两天将指标列添加到表中

使用列作为函数的输入参数并将结果添加到表中

在读取和绑定多个文件时将“文件名”列添加到表中

SQL Server 错误 1934 发生在 INSERT 到具有计算列 PHP/PDO 的表中