sql server - SQL Random number not working -


<फीट>
declare @fieldforceCounter के रूप में int declare @SaleDate as dateTime घोषित @RandomNoSeed के रूप में दशमलव सेट @fieldForceCounter = 1 set @SaleDate = '1 जनवरी 200 9' सेट @RandomNoSeed = 0.0 WHILE @fieldForceCounter & lt; = 3 BEGIN @SaleDate & lt; = '1 दिसम्बर 200 9' मासिक फीस (FFCode, SaleDate, SaleValue) मूल्यों में शुरू करें (@फ़ील्डफॉर्सकॉन्टर, @SaleDate, RAND) (@RandomNoSeed) सेट @saleDate = @saleDate + 1 सेट @RandomNoSeed = Rand (@RandomNoSeed) + 1 अंत सेट @SaleDate = '1 जनवरी 2009' सेट @fieldForceCounter = @fieldForceCounter + 1 अंत जाओ

इस टी-एसक्यूएल कमांड को ' बिक्रीवैल्यू ' में कॉलम में ' मासिक सेल्स ' तालिका में यादृच्छिक मूल्यों को सम्मिलित करना चाहिए था।

< P> लेकिन यह '1' हर बार सम्मिलित है।

समस्या क्या हो सकती है?

दो समस्याएं:

  • सबसे पहले, आरए एनडी () फ़ंक्शन 0 और 1 के बीच एक नंबर देता है।
  • दूसरे, जब रैंड () को एक ही क्वेरी में कई बार कहा जाता है (उदा। एक अद्यतन कथन में कई पंक्तियों के लिए), यह आम तौर पर एक ही नंबर देता है (जो मुझे आपके एल्गोरिदम पर संदेह है, हल करने की कोशिश कर रहा है, इसे कई कॉल में विभाजित करके)
< P> दूसरी समस्या के चारों ओर मेरा पसंदीदा तरीका एक फ़ंक्शन का उपयोग करना है जो हर बार अद्वितीय मूल्य को वापस देने की गारंटी देता है, जैसे कि नया (), उसे वर्बलरी में परिवर्तित कर, और इसे बीज के रूप में प्रयोग करें:)

संपादित करें : कुछ परीक्षण के बाद, ऐसा लगता है कि आपको @RandomNoSeed के लिए एक अलग डेटाटाइप का उपयोग करने की आवश्यकता होगी; फ्लोट दशमलव से कुछ भिन्न होता है, लेकिन फिर भी एक निश्चित मूल्य तक पहुंच जाता है, इसलिए मैं @RandomNoSeed के उपयोग से बचने की सिफारिश करता हूं, और बस का उपयोग करें:

  मासिक सेल्स में INSERT (FFCode, SaleDate, SaleValue ) मूल्य (@ फ़ल्डफ़ॉर्सकॉन्टर, @ सीलडेट, रैंड (कन्वर्ट (वर्बनी, न्यूड ()))  

Comments

Popular posts from this blog

c++ - Linux and clipboard -

What is expire header and how to achive them in ASP.NET and PHP? -

sql server - How can I determine which of my SQL 2005 statistics are unused? -