大家好我正在尝试创建正在运行的待处理值,就像运行总计一样,因为我非常接近,但是我无法做到。它产生了一些错误的输出如何在sqlite中计算正在运行的待处理值
这里是sqlite导出代码来创建表和数据。
BEGIN TRANSACTION;
CREATE TABLE "tab_in" (
id INTEGER PRIMARY KEY ASC AUTOINCREMENT,
"type" TEXT NOT NULL, "grams" INTEGER NOT NULL
);
INSERT INTO `tab_in` VALUES (1,'type1',1000);
INSERT INTO `tab_in` VALUES (2,'type2',2000);
CREATE TABLE "sub_" (
id INTEGER PRIMARY KEY ASC AUTOINCREMENT,
"gram1" REAL, "gram2" REAL,
"gram3" REAL,
"_date" TEXT,
"id_sub" INTEGER,
"record_count" INTEGER,
FOREIGN KEY(id_sub) REFERENCES sub(id)
);
INSERT INTO `sub_` VALUES (5,10.0,NULL,NULL,'2017-06-01 00:00:00.000',2,2);
INSERT INTO `sub_` VALUES (7,1.45,NULL,NULL,'2017-06-01 00:00:00.000',1,3);
INSERT INTO `sub_` VALUES (8,12.6,NULL,NULL,'2017-06-01 00:00:00.000',1,4);
INSERT INTO `sub_` VALUES (9,NULL,13.3,NULL,'2017-06-02 00:00:00.000',2,5);
INSERT INTO `sub_` VALUES (10,NULL,NULL,20.46,'2017-06-02 00:00:00.000',2,6);
INSERT INTO `sub_` VALUES (11,6.23,NULL,NULL,'2017-06-02 00:00:00.000',2,7);
CREATE TABLE "sub" (
id INTEGER PRIMARY KEY ASC AUTOINCREMENT,
"_date" TEXT NOT NULL,
"gram" REAL NOT NULL,
"id_tab_in" INTEGER NOT NULL,
"record_count" INTEGER,
FOREIGN KEY(id_tab_in) REFERENCES tab_in(id)
);
INSERT INTO `sub` VALUES (1,'2017-05-30 00:00:00.000',14.05,1,1);
INSERT INTO `sub` VALUES (2,'2017-05-30 00:00:00.000',50.0,2,2);
COMMIT;
以下是我一直在处理但无法使其工作的查询。此查询的
SELECT DISTINCT
"sub_"."_date" as "sub_._date",
"sub_"."gram1" as "sub_.gram1",
"sub_"."gram2" as "sub_.gram2",
"sub_"."gram3" as "sub_.gram3",
(
(SELECT sub.gram FROM sub WHERE sub.id=sub_.id_sub) -
(
SELECT ifnull(TOTAL(s.gram1), 0) +
ifnull(TOTAL(s.gram2), 0) +
ifnull(TOTAL(s.gram3), 0)
FROM sub_ s
WHERE (s.id_sub=sub_.id_sub)
AND (s.record_count <= sub_.record_count)
)
) AS 'sub_.pending',
"sub_".id,
"sub_"."id_sub" as "sub_.id_sub"
FROM "sub_"
LEFT OUTER JOIN "sub" ON "sub_"."id_sub"="sub".id
WHERE "sub_"."id_sub"=1;
输出是(对于sub.id
= 1值sub.gram
是14.05)我做的基本上就是在这里,要计算待定值我从sub.gram
使用sub_.gram1
,sub_.gram2
,sub_.gram3
总减去。
sub_._date sub_.gram1 sub_.gram2 sub_.gram3 sub_.pending id sub_.id_sub
2017-06-01 00:00:00.000 1.45 (null) (null) 12.600000000000001 7 1
2017-06-01 00:00:00.000 12.6 (null) (null) 1.7763568394002505e-15 8 1
所需的输出为sub_.pending
是
sub_.pending
12.6
0
请帮我做它的工作。
术语“运行未决”是未知的,我能不能在散文你想达到什么样的解释,你能不能给预期的输出,你能解释一下的输出你。?查询不能满足你吗?否则第一个问题很好的mcve,我的恭维。 – Yunnosch
对于ID 1,我得到了sub.gram = 14.05,sub_.gram1 + 2 + 3 = 1 4.05。 Diff = 0.对于ID 2,我得到了sub.gram = 50,sub_.gram1 + 2 + 3 = 49.99。 Diff = 0.01。这与您的预期结果不符。那么什么是*你的*公式来加起来的子克呢? –
什么是'record_count'列?乍看之下他们似乎没有多少意义。 –