【问题标题】:Procedure to compare two columns from different tables and make the insert比较来自不同表的两列并进行插入的过程
【发布时间】:2014-11-05 22:26:32
【问题描述】:

我有两张桌子:

  1. 带有字段 fld_id(整数)、fld_allocated_hours(整数)、fld_project_id(整数)的项目
  2. 带有字段 fld_id(整数)、fld_allocated_time(整数)、fld_project_id(整数)的TIMESHEET

我有这个程序:

CREATE PROCEDURE sp_insert_allocated_time(p_project_id integer, p_allocated_time integer)
  RETURNS void 
  AS
BEGIN   
INSERT INTO dbo.Timesheet(fld_id, fld_project_id,fld_allocated_time)
from
(
  SELECT p.fld_id, p.fld_allocated_hours t.fld_allocated_time
  FROM dbo.Project p
  INNER JOIN dbo.Timesheet t
  ON p.fld_id=t.fld_id
  where t.fld_project_id = p_project_id
)AS Alias
GROUP BY fld_id, fld_allocated_days, fld_allocated_time
having SUM(fld_allocated_time) < fld_allocated_hours;
END;

我想做这个程序:

  1. 从参数 fld_project_id 将分配的时间插入表 Timesheet 中
  2. 检查表 Timesheet 中的列 SUM(fld_allocated_time) 是否小于或等于表 Project 中的 fld_allocated_hours。
  3. 进行插入或错误消息或退出

【问题讨论】:

    标签: sql sql-server sql-server-2008 tsql stored-procedures


    【解决方案1】:

    您可以使用 IF...ELSE 块来检查条件并根据条件结果执行适当的操作。为此,您需要将 SUM(fld_allocated_time) 和 fld_allocated_hours 的结果存储到变量中,然后:

    IF @sumResult <= @allocatedTime 
    BEGIN
    --do some stuff
    END
    ELSE
    BEGIN
    --do some other stuff
    END
    

    【讨论】:

      猜你喜欢
      • 2015-01-08
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      相关资源
      最近更新 更多