简化我有这样的表格设置:
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
我没有使用存储过程的经验,所以如果有人可以帮助我这个或帮助我朝着正确的方向。非常感谢任何帮助:)
答案 0 :(得分: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
顺便说一句 - 我在构建小提琴时使用了不同的默认值 - 相应更新,您的金额将与帖子中的金额相匹配。