SQLlite算法将两个表列分开并将数字输出到一个新表中

时间:2017-01-19 10:27:15

标签: algorithm sqlite pascal lazarus

我是SQL的新手,在Lazarus和pascal语言中创建了一个数据库。我目前正在使用SQLlite3。到目前为止,我已经创建了一个拥有业务的当前资产和负债(整数)的数据库,但是我需要创建一个算法来划分这两个数字并将这两个数字的“比率”除以新表格,任何帮助,将不胜感激。

非常感谢。

1 个答案:

答案 0 :(得分:0)

下面的Sql创建了两个Sqlite表

  

列有公司ID,资产和负债的公司

     

CompanyAL,列号为CompanyID和Ratio(Liabilites为Assets)

然后用几行填充Companies表,然后使用

insert into ... select ...

将资产/负债的比率插入公司数据表。

重要提示:在Sqlite中,"划分"符号/默认给出整数结果,因此会给出比值0和2.为了克服这个问题,你需要使用一个表达式,它将结果乘以1.0;我已经在分子和面额中用表达式来计算比率列中的值。

CREATE  TABLE "main"."Companies" ("CompanyID" INTEGER PRIMARY KEY  NOT NULL  check(typeof("CompanyID") = 'integer') , "Assets" INTEGER check(typeof("Assets") = 'integer') , "Liabilities" INTEGER check(typeof("Liabilities") = 'integer') );

CREATE  TABLE "main"."CompanyAL" ("CompanyID" INTEGER PRIMARY KEY  NOT NULL  check(typeof("CompanyID") = 'integer') , "Ratio" FLOAT);

insert into Companies(CompanyID, Assets, Liabilities) values(1, 100, 50);
insert into Companies(CompanyID, Assets, Liabilities) values(2, 50, 100);

insert into CompanyAL select CompanyID, (Liabilities  * 1.0 / Assets * 1.0) from Companies 

使用适用于Firefox的Sqlite Manager加载项对Sqlite进行了测试。显然,在你的Lazarus应用程序中,你将在代码中构造必要的Sql并使用合适的数据库组件来对数据库执行它。