【发布时间】:2015-08-18 12:32:03
【问题描述】:
第一次发帖,如果之前有人问过,请原谅我。
我对编写 SQL 并不陌生,但我也不是专家。
我需要一个更好的方法来写这个:
CASE
WHEN OrderQuantity + Week1Quantity >= CriteriaAmount THEN 1
WHEN OrderQuantity + Week1Quantity + Week2Quantity >= CriteriaAmount THEN 2
WHEN OrderQuantity + Week1Quantity + Week2Quantity + Week3Quantity >= CriteriaAmount THEN 3
WHEN OrderQuantity + Week1Quantity + Week2Quantity + Week3Quantity + Week4Quantity >= CriteriaAmount THEN 4
WHEN OrderQuantity + Week1Quantity + Week2Quantity + Week3Quantity + Week4Quantity + Week5Quantity >= CriteriaAmount THEN 5
WHEN OrderQuantity + Week1Quantity + Week2Quantity + Week3Quantity + Week4Quantity + Week5Quantity + Week6Quantity >= CriteriaAmount THEN 6
WHEN OrderQuantity + Week1Quantity + Week2Quantity + Week3Quantity + Week4Quantity + Week5Quantity + Week6Quantity + Week7Quantity > CriteriaAmount THEN 7
WHEN OrderQuantity + Week1Quantity + Week2Quantity + Week3Quantity + Week4Quantity + Week5Quantity + Week6Quantity + Week7Quantity + Week8Quantity >= CriteriaAmount THEN 8
ELSE 999
END
其目的是使用每列中的数值作为总和,找到击中目标的第一个阶段。
表格如下:
订单数量第1周第2周第3周(建议目标)
…………5………………5…….....5...........5.................. ....15........
........10............ kbd>....10.........10.........10.................500............
在上表中,第 1 行将给出 2 的答案,因为要达到目标还有 2 周的时间。
第 2 行将落在 ELSE 语句上,给出 999,稍后将转换为错误。
我想要一个更好的方法来写这个,因为我还有 52 列要通过你可以想象这是一个空白猪!
谢谢, 亚当
【问题讨论】:
标签: sql-server optimization sum conditional-statements case-when