1

简化我有这个表设置:

Table Users:       Table HolidayTypes:              Table Days:
  ID                       ID                           Year
  Name                TypeName (f.e. 3 types)          TypeID  
                        DefaultValue                   UserId  
                                                       Amount

现在我想要实现的是创建一个可以在每年年初运行的存储过程,它将执行以下操作:

对于每个用户,在 Days 表中为每种类型的假期添加新记录并插入默认金额。所以我想得到这样的东西:

Year      TypeId     UserId     Amount
2013        1           1         20
2013        2           1          4
2013        3           1         15
2013        1           2         20
2013        2           2          4
2013        3           2         15

我没有存储过程的经验,所以如果有人可以帮助我解决这个问题或帮助我朝着正确的方向发展。任何帮助深表感谢 :)

4

1 回答 1

1

这应该是您要查找的查询,它使用CROSS JOIN

INSERT INTO Days
SELECT Year(GetDate()) Year,
  HT.Id TypeId,
  U.Id UserId,
  DefaultValue                   
FROM Users U CROSS JOIN HolidayTypes HT

这是示例小提琴:http ://sqlfiddle.com/#!3/15164/1

这会产生以下结果:

YEAR    TYPEID  USERID  AMOUNT
2013    1       1       20
2013    2       1       10
2013    3       1       5
2013    1       2       20
2013    2       2       10
2013    3       2       5

顺便说一句——我在构建小提琴时使用了不同的默认值——相应地更新,您的金额将与您帖子中的金额相匹配。

于 2013-02-18T21:02:01.997 回答