比较来自不同表的两列并进行插入

外星人软件

我有两个表:

1.Tbl_project

fld_id fld_allocated_days
1       10
2        3
3        1
4       99

2.Tbl_project_timesheet

fld_id fld_allocated_time fld_project_id
1       8.00                1
2       8.00                1
3       8.00                2
4       8.00                3
5       8.00                2
6       8.00                2
7       8.00                1
8       8.00                4
9       8.00                1

--fld_project_id从tbl_project引用(fld_id)

我想做一个函数,将表tbl_project中的fld_allocated_days列与tbl_project_timesheet中的SUM(fld_allocated_time)列进行比较。

如果第一列(fld_allocated_times)低于第二列(fld_allocated_days),请在表tbl_project_timesheet上插入。

函数参数之一是p_project_id,它将选择为哪个项目插入分配的时间。

我有一个功能,可以插入分配的时间,但不检查是否超过了分配的天数。

CREATE OR REPLACE FUNCTION function_add_timesheet_record( p_project_id integer, p_allocated_time numeric)
  RETURNS void AS

BEGIN

INSERT INTO tbl_project_timesheet(fld_project_id,fld_allocated_time)
    VALUES (p_project_id, p_allocated_time);
END
库伯·萨帕列夫

基于上面的评论,我们假设1 dayfrom from tbl_projectequals 8 hoursfrom table tbl_project_timesheet这样,采用您提供的数据,项目1的丢失天数为6天,项目4的丢失天数为98天。我们将其转换为秒,然后比较两个表中的值。

然后,我们将整天数量的八分之一填充到数组中,然后将数组的其余部分追加到数组中(如果存在不完整的天数)。

然后我们对数组进行嵌套,以便每行(天)有8个小时。最后,我们插入数据。

WITH
  d AS (
    SELECT
      p.fld_id,
      p.fld_allocated_days * 8 * 3600 - COALESCE(
        SUM(
          EXTRACT(epoch FROM t.fld_allocated_time)::int
        ),
      0) AS diff
    FROM
      tbl_project p LEFT JOIN tbl_project_timesheet t
    ON
      p.fld_id=t.fld_project_id
    GROUP BY
      p.fld_id
  ),
  agg_d AS (
    SELECT
      fld_id,
      UNNEST(
        ARRAY_APPEND(
          ARRAY_FILL(
            '8:00'::time,
            ARRAY[(diff / (3600 * 8))::int]
          ),
          ((diff % (3600 * 8)) * interval '1 second')::time
        )
      ) AS hours FROM d
    WHERE
      diff > 0
  )
INSERT INTO tbl_project_timesheet
  (fld_project_id, fld_allocated_time)
SELECT
  fld_id, hours
FROM
  agg_d
WHERE
  hours > '0:0'::time;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

比较来自不同表的两列并进行插入的过程

来自分类Dev

比较来自不同表的两列

来自分类Dev

如何从两个不同的表中获取特定列的总和并进行打印

来自分类Dev

显示来自两个不同表(比较表)的两列之间的差异

来自分类Dev

将来自不同表的两列插入一个表

来自分类Dev

SQL:将两列(来自不同的表)相乘并插入/更新(其中一个表)

来自分类Dev

perl匹配来自不同表的两列

来自分类Dev

合并来自不同表的两列

来自分类Dev

perl匹配来自不同表的两列

来自分类Dev

比较MySQL不同表中的两列

来自分类Dev

如何基于将两列与各自的表进行比较而插入值(SQL脚本)?

来自分类Dev

比较来自不同表的两个值-MySQL

来自分类Dev

比较来自不同表的两个值-MySQL

来自分类Dev

获取两个不同的类实例并进行比较(Java)

来自分类Dev

如果同一列中的记录之间的差异小于或等于0.001,则比较不同文件中的两列并进行打印匹配

来自分类Dev

如何将多行与来自两个不同表的其他行进行比较并检查它们是否相等?

来自分类Dev

在来自不同表的列的列中插入值

来自分类Dev

比较来自不同表的列的日期时间值

来自分类Dev

比较两个不同表中的两列?

来自分类Dev

比较两个不同 Excel 表中的两列

来自分类Dev

sql比较两个表以进行不同选择

来自分类Dev

SQL 与来自某些列的相同表复制值进行比较

来自分类Dev

插入来自不同表的值

来自分类Dev

匹配来自不同表的两列-MySQL PHP

来自分类Dev

计算来自不同表的两列的记录

来自分类Dev

SQL。这涉及将来自不同表的两列相乘

来自分类Dev

MySQL根据来自不同表的2列对结果进行排序

来自分类Dev

查找两个最新的更改文件并进行比较

来自分类Dev

如果表中存在两列,则更新表;如果两列之一不同,则插入表

Related 相关文章

  1. 1

    比较来自不同表的两列并进行插入的过程

  2. 2

    比较来自不同表的两列

  3. 3

    如何从两个不同的表中获取特定列的总和并进行打印

  4. 4

    显示来自两个不同表(比较表)的两列之间的差异

  5. 5

    将来自不同表的两列插入一个表

  6. 6

    SQL:将两列(来自不同的表)相乘并插入/更新(其中一个表)

  7. 7

    perl匹配来自不同表的两列

  8. 8

    合并来自不同表的两列

  9. 9

    perl匹配来自不同表的两列

  10. 10

    比较MySQL不同表中的两列

  11. 11

    如何基于将两列与各自的表进行比较而插入值(SQL脚本)?

  12. 12

    比较来自不同表的两个值-MySQL

  13. 13

    比较来自不同表的两个值-MySQL

  14. 14

    获取两个不同的类实例并进行比较(Java)

  15. 15

    如果同一列中的记录之间的差异小于或等于0.001,则比较不同文件中的两列并进行打印匹配

  16. 16

    如何将多行与来自两个不同表的其他行进行比较并检查它们是否相等?

  17. 17

    在来自不同表的列的列中插入值

  18. 18

    比较来自不同表的列的日期时间值

  19. 19

    比较两个不同表中的两列?

  20. 20

    比较两个不同 Excel 表中的两列

  21. 21

    sql比较两个表以进行不同选择

  22. 22

    SQL 与来自某些列的相同表复制值进行比较

  23. 23

    插入来自不同表的值

  24. 24

    匹配来自不同表的两列-MySQL PHP

  25. 25

    计算来自不同表的两列的记录

  26. 26

    SQL。这涉及将来自不同表的两列相乘

  27. 27

    MySQL根据来自不同表的2列对结果进行排序

  28. 28

    查找两个最新的更改文件并进行比较

  29. 29

    如果表中存在两列,则更新表;如果两列之一不同,则插入表

热门标签

归档