我需要为第二个条目获取当前与该特定年份的前一笔金额的总和。
Input_table
+-----------+----------+-------------+-----------+----------+
| ID | Name | Date1 |Date 2 |amount |
+-----------+----------+-------------+-----------+----------+
| 10000000 | ABC | 11/2/2017 |**11/2/2018** |2504 |
| 10000000 | ABC | 12/20/2017 |**11/2/2018** |-2174 |
| 10000000 | ABC | 10/05/2018 |10/05/2019 |1234 |
| 10000000 | ABC | 10/06/2019 |10/06/2020 |3456 |
+-----------+----------+-------------+-----------+----------+
以下是所需的输出:
+-----------+----------+-------------+-----------+----------+
| ID | Name | Date1 |Date 2 |amount |
+-----------+----------+-------------+-----------+----------+
| 10000000 | ABC | 11/2/2017 |**11/2/2018** |2504 |
| 10000000 | ABC | 12/20/2017 |**11/2/2018** |329 |
| 10000000 | ABC | 10/05/2018 |10/05/2019 |1234 |
| 10000000 | ABC | 10/06/2019 |10/06/2020 |3456 |
+-----------+----------+-------------+-----------+----------+
记录3金额-1234(1234 0(该年无记录)),因为日期2不同
记录4金额- 3456 (3456 0(当年无记录))与日期2不同
如果两条记录的日期2相同,我正在查找记录的当前和以前金额值的总和。假设我们有3条记录具有相同的日期2值。然后第一条记录应该有它的实际金额值,第二条记录应该具有第一条记录金额2记录金额,而第三条记录应该拥有第一条记录数量2记录金额3记录金额。
我在这里做了一些相当大的假设。主要是,您希望查看当前记录的“Date2”值是否存在于上一年的“Date1”中的某个位置(例如,Date2:11/02/2018 正在查看 Date1:11/02/2017 是否存在),并且 ID 和 Name 列在筛选数据时具有某种相关性。
以下是我在SSMS中使用的内容:
-- Create sample data.
DECLARE @Data TABLE (
ID VARCHAR(10), [Name] VARCHAR(3), Date1 DATE, Date2 DATE, Amount DECIMAL(18,2)
);
INSERT INTO @Data ( ID, [Name], Date1, Date2, Amount ) VALUES
( '10000000', 'ABC', '11/2/2017', '11/2/2018', 2504),
( '10000000', 'ABC', '12/20/2017', '11/2/2018', -2174),
( '10000000', 'ABC', '10/05/2018', '10/05/2019', 1234),
( '10000000', 'ABC', '10/06/2019', '10/06/2020', 3456);
-- Query sample data
SELECT
MyData.ID, MyData.[Name], MyData.Date1, MyData.Date2, MyData.Amount
, ISNULL( LastYear.Amount, 0 ) AS PreviousYear
, ( MyData.Amount + ISNULL( LastYear.Amount, 0 ) ) AS NewAmount
FROM @Data AS MyData
OUTER APPLY (
SELECT
SubData.Amount AS Amount
FROM @Data AS SubData
WHERE
SubData.ID = MyData.ID
AND SubData.[Name] = MyData.[Name]
AND SubData.Date1 = DATEADD( yy, -1, MyData.Date2 )
AND SubData.Date1 <> MyData.Date1 -- A weak attempt to exclude the current MyData record. Really needs a unique id.
) AS LastYear
ORDER BY
MyData.Date2;
--退货
+----------+------+------------+------------+----------+--------------+-----------+
| ID | Name | Date1 | Date2 | Amount | PreviousYear | NewAmount |
+----------+------+------------+------------+----------+--------------+-----------+
| 10000000 | ABC | 2017-11-02 | 2018-11-02 | 2504.00 | 0.00 | 2504.00 |
| 10000000 | ABC | 2017-12-20 | 2018-11-02 | -2174.00 | 2504.00 | 330.00 |
| 10000000 | ABC | 2018-10-05 | 2019-10-05 | 1234.00 | 0.00 | 1234.00 |
| 10000000 | ABC | 2019-10-06 | 2020-10-06 | 3456.00 | 0.00 | 3456.00 |
+----------+------+------------+------------+----------+--------------+-----------+
理想情况下,被查询的表有一个PK,可以用来将当前记录排除在外(注意使用Date1的微弱尝试)。
使用PK(唯一id)的相同示例:
DECLARE @Data TABLE (
ID VARCHAR(10), [Name] VARCHAR(3), Date1 DATE, Date2 DATE, Amount DECIMAL(18,2), pk_PrimaryKey INT IDENTITY(1,1) PRIMARY KEY
);
INSERT INTO @Data ( ID, [Name], Date1, Date2, Amount ) VALUES
( '10000000', 'ABC', '11/2/2017', '11/2/2018', 2504),
( '10000000', 'ABC', '12/20/2017', '11/2/2018', -2174),
( '10000000', 'ABC', '10/05/2018', '10/05/2019', 1234),
( '10000000', 'ABC', '10/06/2019', '10/06/2020', 3456);
SELECT
MyData.ID, MyData.[Name], MyData.Date1, MyData.Date2, MyData.Amount
, ISNULL( LastYear.Amount, 0 ) AS PreviousYear
, ( MyData.Amount + ISNULL( LastYear.Amount, 0 ) ) AS NewAmount
FROM @Data AS MyData
OUTER APPLY (
SELECT
SubData.Amount AS Amount
FROM @Data AS SubData
WHERE
SubData.ID = MyData.ID
AND SubData.[Name] = MyData.[Name]
AND SubData.Date1 = DATEADD( yy, -1, MyData.Date2 )
AND SubData.pk_PrimaryKey <> MyData.pk_PrimaryKey
) AS LastYear
ORDER BY
MyData.Date1;
不管怎样,这是我根据我所掌握的一点点信息做出的最好猜测。希望这能让你朝着正确的方向前进。
问题内容: iv在jqgrid中看到了@Oleg的行总和示例,但我尝试应用它,但它无法正常工作,我有以下网格,我需要为其计算金额值。 请奥列格(Oleg)帮助,我已经尝试了您的示例,但是由于某些原因它没有起作用。 问题答案: 如果我理解的正确,则希望将其放置在页脚getCol和footerData方法中: 该可用于从“量”柱,并且尊重计算所有数字的总和,你可以在底部放置列中的文本“总计:”和在底部
本文向大家介绍查找最少数量的便笺以求总金额-JavaScript,包括了查找最少数量的便笺以求总金额-JavaScript的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个货币系统,其中有1000个单位,500个单位,100个单位,50个单位,20个单位,10个单位,5个单位,2个单位和1单位的面额。 在给定特定数量的情况下,我们需要编写一个函数,该函数计算总计最少的总面额。 例如,如果金额
嗨,伙计们,我已经修复了最初的问题,但现在它不是正确的加起来。我不确定该做什么,哪里出了问题。如有任何帮助,我们将不胜感激。 导入java.util.scanner; public类zoo{public static void main(String[]args){
我在做购物车。我能根据数量计算产品价格。 现在我计算的总额取决于小计和运费与产品价格。 当我增加产品数量时,它会计算产品价格,但不会计算小计和总金额。 或者有没有其他安全的方法来处理这个问题? 你能帮我解决这个问题吗?
问题内容: 我已经在SF中看到了这个问题,但是我是菜鸟,只是无法让我的头脑变得模糊。因此,如果您想重复,请原谅我。 我的样品表 我需要获取“ UNTIL”行,对于特定的供应商ID,“ QTY”的累计总数按降序等于或大于5。 在此示例中,对于供应商1,它将是ID为5和2的行。 问题答案: 这个怎么样?使用两个变量。 SQLFIDDLE演示 询问:
问题内容: 上面的选择向我返回了以下内容。 我如何获得以下信息: 问题答案: SQL Fiddle示例 输出 编辑:这是一个通用的解决方案,将可在大多数数据库平台上使用。如果您的特定平台(例如gareth的)有更好的解决方案,请使用它!