2013-10-02 6 views
9

मेरे पास पूर्णांक डेटा के दो कॉलम के साथ एक temp तालिका है, मैं तीसरे कॉलम में दो कॉलम के बीच अंतर खोजना चाहता हूं।दो कॉलम डेटा के बीच अंतर कैसे प्राप्त करें?

#TEMP1 

Present previous 
59   88 
75   75 
45   45 
77   88 
09   08 

#temp2 

Difference 
29 
0 
0 
11 
-1 

क्या यह संभव है ??

उत्तर

15
select previous, Present, previous-Present as Difference from tablename 

या

4

यदि तालिका उर्फ ​​t

SELECT t.Present , t.previous, t.previous- t.Present AS Difference 
FROM temp1 as t 
6

है हाँ, यदि आप डेटा का चयन कर सकते अंतर की गणना, और अन्य तालिका में सभी मूल्यों को सम्मिलित करें:

insert into #temp2 (Difference) 
select previous - Present 
from #TEMP1 
2

ऐसा करने के कई तरीके हैं (और मैं आपको उन्हें देखने के लिए प्रोत्साहित करता हूं क्योंकि वे आम तौर पर अधिक कुशल होंगे) लेकिन ऐसा करने का सबसे आसान तरीका तीसरे कॉलम के मान को परिभाषित करने के लिए गैर-सेट ऑपरेशन का उपयोग करना है:

SELECT 
    t1.previous 
    ,t1.present 
    ,(t1.present - t1.previous) as difference 
FROM #TEMP1 t1 

नोट, चयन की इस शैली को खराब अभ्यास माना जाता है क्योंकि इसे पहले दो स्तंभों के मूल्य को संशोधित करने के लिए क्वेरी योजना की आवश्यकता होती है जो तर्कसंगत रूप से तीसरे (एसक्यूएल आधारित सेट सिद्धांत का उल्लंघन) निर्धारित करने के लिए आवश्यक है। हालांकि यह अधिक जटिल है, यदि आप अपने उदाहरण में सूचीबद्ध मूल्यों के मुकाबले अधिक मूल्यांकन करने के लिए इसका उपयोग करने की योजना बना रहे हैं, तो मैं एक आवेदन खंड का उपयोग करके जांच करूँगा। http://technet.microsoft.com/en-us/library/ms175156(v=sql.105).aspx

संबंधित मुद्दे