2010-12-07 12 views
6

क्या IIF कथन SQL सर्वर के सभी संस्करणों में मौजूद है?SQL सर्वर 2005 में IIF कथन

मैंने MSDN पर एक ट्यूटोरियल की जांच की है।

लेकिन जब मैं अपने मशीन

DECLARE @newDate datetime 
SET @newDate = CONVERT(varchar, {fn NOW()}, 111) 
SELECT IIF(@newDate > '2010/12/2', 'Greater', 'smaller') 

पर इस कोड को भागने की कोशिश की लेकिन मैं की त्रुटि हो रही है "गलत वाक्य रचना के पास '>'।"

क्या कोई मुझे IIF कथन के अस्तित्व के लिए SQL Server 2005 में एक उदाहरण प्रदान कर सकता है? IIF बयान केवल MDX में मौजूद है

उत्तर

11

कि - एसक्यूएल सर्वर विश्लेषण सेवाओं के लिए क्वेरी भाषा - एसक्यूएल सर्वर के Datawarehousing ओर।

सादा टी-एसक्यूएल IIF कथन है।

टी-एसक्यूएल में आप जो कर सकते हैं सबसे अच्छा CASE.... WHEN... THEN... कथन का उपयोग कर रहा है।

+3

अद्यतन: SQL सर्वर 2012 में अब आईआईएफ स्टेटमेंट है। http://msdn.microsoft.com/en-us/library/hh213574.aspx – Somantra

+0

@ सोमंत्र: सत्य - लेकिन वह दिसंबर -2010 में वापस नहीं जानता था, और ओपी एसक्यूएल सर्वर 2005 के बारे में पूछ रहा था। –

+3

शीर्षक कहता है 2005, लेकिन उनके पहले सवाल से पूछा गया "क्या आईआईएफ कथन SQL सर्वर के सभी संस्करणों में मौजूद है?"। उम्मीद है कि भविष्य में किसी को इस पोस्ट में कुछ उपयोगी लगेगा। ;-) – Somantra

6

आप एक CASE अभिव्यक्ति का उपयोग कर बेहतर कर रहे हैं:

DECLARE @newDate datetime 
SET @newDate = CONVERT(varchar, {fn NOW()}, 111) 
SELECT CASE WHEN @newDate > '20101202' THEN 'Greater' ELSE 'smaller' END 

कृपया ध्यान दें कि मैं एक सुरक्षित प्रारूप करने के लिए अपनी तिथि शाब्दिक स्विच किया है - '2010/12/02' एसक्यूएल सर्वर द्वारा व्याख्या की जा सकती या तो 12 फरवरी या 2 दिसंबर के रूप में।

-1
IIF([Add DVP Month].DevelopmentMonth>[Add DVP Month].COVMONTHS, 
     1, 
    IIF([STATUS]<>'1', 
     1, 
    IIF([Add DVP Month].PLANTYPE = 'A' and [Add DVP Month].newUsedProgram = 'U' and [Add DVP Month].COVMONTHS = 60 and [Add DVP Month].COVMILES = 100000 and [Add DVP Month].postedDt >= #1/31/2010#, 
    IIF([Add DVP Month].postedDt >= #1/31/2012#, 
     [EPMthd.PCM2], 
    IIF([Add DVP Month].postedDt >= #1/31/2010#, 
    [EPMthd.PCM1], 
    [EPMthd.PCM0]) 
    ), 
    IIF([Add DVP Month].COVMONTHS = 999,[EPMthd.2], 
    IIF([Add DVP Month].postedDt >= #1/31/2012#, [EPMthd.2], 
    IIF([Add DVP Month].postedDt >= #1/31/2010#, [EPMthd.1], 
    IIF([Add DVP Month].postedDt >= #1/31/2008#, 
    IIF([EPMthd.0] is null, 
     [EPMthd.8], 
     [EPMthd.0] 
    ), 
    IIF([Add DVP Month].postedDt < #1/31/2008#, 
    IIF([EPMthd.8] is null, 
    IIF([Add DVP Month].COVMONTHS = 0,0, 
     [Add DVP Month].DevelopmentMonth/[Add DVP Month].COVMONTHS 
    ), 
     [EPMthd.8] 
    ), 
    IIF([Add DVP Month].COVMONTHS = 0, 
    0, 
     [Add DVP Month].DevelopmentMonth/[Add DVP Month].COVMONTHS 
    ) 
    ) 
)))))) 
) AS [EP%] 
+1

यह सिर्फ एक कचरा पोस्ट है। – nalply

+0

सहमत हैं। यह नहीं पूछा गया था और एसक्यूएल सर्वर के लिए पूरी तरह से अलग वाक्यविन्यास – Fandango68