Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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_Tsql_Calculated Columns - Fatal编程技术网

Sql 在现有表上添加派生列

Sql 在现有表上添加派生列,sql,sql-server,tsql,calculated-columns,Sql,Sql Server,Tsql,Calculated Columns,可能重复: 我有一个带有值的SQL Server表,如下所示: Account - Date - Amount - Summary 10000 - 2010-1-1 - 50.00 - 0.00 10000 - 2010-2-1 - 50.00 - 0.00 10000 - 2010-3-1 - 50.00 - 0.00 10000 - 2010-4-1 - 50.00 - 0.00 10000 - 2010-5-1 - 50.00 - 0.00 10000 - 2010-6-1 - 50.0

可能重复:

我有一个带有值的SQL Server表,如下所示:

Account - Date - Amount - Summary
10000 - 2010-1-1 - 50.00 - 0.00
10000 - 2010-2-1 - 50.00 - 0.00
10000 - 2010-3-1 - 50.00 - 0.00
10000 - 2010-4-1 - 50.00 - 0.00
10000 - 2010-5-1 - 50.00 - 0.00
10000 - 2010-6-1 - 50.00 - 0.00
10000 - 2010-7-1 - 50.00 - 0.00
10000 - 2010-8-1 - 50.00 - 0.00
10000 - 2010-9-1 - 50.00 - 0.00
10000 - 2010-10-1 - 50.00 - 0.00
10000 - 2010-11-1 - 50.00 - 0.00
10000 - 2010-12-1 - 50.00 - 600.00
10001 - 2010-1-1 - 50.00 - 0.00
10001 - 2010-2-1 - 60.00 - 0.00
10001 - 2010-12-1 - 60.00 - 170.00

这是表的基本快照。“汇总”字段在“日期”列中给出年末金额的总计,但仅当月份(日期)=“12”时。数百个账户都是这样,大约还有4年。我想在现有表中添加一列,称为“SummaryPreviousYear”。SummaryPreviousYear列应包含从月份(日期)=“12”到上一年的金额之和。我想在帐号上加入此列,这样它就位于摘要列的旁边,并给出一个与摘要值相同的值。有人能帮我吗?我在这里拔头发。非常感谢您的帮助。

假定
[Account]
[Date]
是唯一的,只需将
加入到同一个表中,如下所示:

SELECT
    a.* -- you should explicitly list the columns you want, though
    ,b.[Summary] SummaryPreviousYear
FROM
    myTable a
JOIN
    myTable b
        ON b.[Account] = a.[Account]
        AND DATEPART("yyyy" , b.[date] ) = DATEPART("yyyy" , a.[date] ) - 1
        AND DATEPART("mm" , b.[date] ) = 12
        -- AND whatever other conditions define unique rows

对于任何数据点,不应超过一行具有第1年和第12个月。如果您希望第一年行的值为
NULL
,请改为
左外部联接。

在查看“2011-12-1”摘要时,仅查询帐户的“2010-12-1”信息是否不够?一个简单的“递减1年并从该条目中获取摘要”类型的东西。。为什么有另一个专栏?即使是当前的“Summary”列也是多余的。您缺少一个和DATEPART(“mm”,a.[date])=12Matthew PK,谢谢,这个自连接查询提供了很多细节。但是,帐户和日期不是唯一的。有一个“位置”栏。位置、帐户和日期的组合是唯一的。我得到了多余的值/这是一个经过编辑的问题形式,包含了所需的详细信息……很抱歉,我第一次没有在@Deep中包含这些内容,然后您只需基于所有保证日期唯一性的值加入行即可。您最初的请求没有提到
位置
列。@这不是我理解的要求吗?我认为每一行应该有上一年12月的值,而不仅仅是今年12月的值。