简体   繁体   English

生成范围内的数字-SQL

[英]Generate numbers in range — SQL

I have to generate random values in a range with case statements. 我必须生成带有case语句的范围内的随机值。

For example, we have a table of products as follows: 例如,我们有一个产品表,如下所示:

Product 产品
TV 电视
Refrigerator 冰箱
Laptop 笔记本电脑

Now I need to generate COSTPRICE, SALEPRICE for testing purpose. 现在,我需要生成COSTPRICE,SALEPRICE以进行测试。 Since the price of the products varies from one to another, I need to generate values in a range. 由于产品的价格各不相同,因此我需要生成一个范围内的值。 For example, if the value is TV, then generate values between 1000 to 1100 OR if the value is Refrigerator, then generate values between 800-1000 and so on. 例如,如果值为TV,则生成1000到1100之间的值;如果值为Refrigerator,则生成800-1000之间的值,依此类推。

Any ideas/functions how I could approach this using SQL? 有什么想法/功能可以使用SQL处理吗? I am aware of the function RAND(), but I cannot generate range values with this. 我知道函数RAND(),但是不能用它生成范围值。

Please help me at least to push myself to find a solution. 请至少帮助我,以促使自己找到解决方案。 Thanks 谢谢

So are you basically looking for something like this: 那么您基本上是在寻找这样的东西吗?

SELECT CASE WHEN Product='TV' THEN (1000 + CONVERT(INT, (101)*RAND())) ELSE CASE WHEN Product='Refrigerator' THEN (800 + CONVERT(INT, (201)*RAND())) ELSE 0 END END FROM ProductTable

The idea is pretty simple when it comes to random number between @min & @max. 当涉及@min和@max之间的随机数时,这个想法非常简单。 See below: 见下文:

SELECT @min + CONVERT(INT, (@Max-@min+1)*RAND())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM