【问题标题】:Split row into multiple based on percentages根据百分比将行拆分为多个
【发布时间】:2014-11-03 23:01:39
【问题描述】:

我有两张桌子。我想将数据行拆分成新的多条记录,并根据另一个表中列出的百分比计算字段,并将结果放入查询或新表中。

表 1:

ID       Value        Count
1        100           10
2        1000          100

表 2:

ID        ID2         Percent
1         B            80%
1         C            20%
2         B            70%
2         D            30%

输出:

ID       ID2       Value        Count
1        B          80           8
1        C          20           2
2        B          700          70
2        D          300          30

我可以在 Excel 中手动执行此操作,但表 1 中的输入每个月都会更改,因此不用说创建一种自动执行此操作的方法效率更高。

【问题讨论】:

  • 数据存储在哪里,例如它是在 Excel 电子表格、SQL Server 数据库还是文本文件中?你想如何显示这些数据,例如在 DataGrid、TextBox 或 Web 表单中?
  • 表 1 和表 2 都在 MS Access 表中,我希望输出是 MS Access 数据库中的查询结果或自己的新表

标签: database ms-access


【解决方案1】:

我正在对您的数据表进行两个假设并在此处查看。

  1. OutputValue 列等于Table1Value 列乘以Table2Percent
  2. OutputCount 列等于Table1Count 列乘以Table2Percent

我还将对您的数据库架构进行一项更改:为了使乘法更好地工作,我会将所有百分比更改为十进制形式,以使它们更易于使用。在 Access 中,您需要查看Table2 的设计视图中的Percent 列,单击底部面板中的Field Size,并将其更改为Double

我在编写下面的查询之前已经这样做了。

现在,如何显示您想要的内容

我访问了 Access 数据库并创建了一个新查询。到达那里后,单击View 工具栏或功能区下拉按钮,然后单击SQL View。然后,您可以使用此代码生成结果:

SELECT Table2.ID, Table2.ID2, Table1![Value]*Table2!Percent AS [Value], [Table1]![Count]*[Table2]![Percent] AS Count
FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID;

您可能还想更改 Value 列的名称,因为这是 Access 保留字,以后可能会导致问题。

当您执行查询时,将产生与您在示例中一样的结果。然后,您可以使用此查询来填充应用程序。

【讨论】:

    猜你喜欢
    • 2019-08-07
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多