2012-10-24 15 views
13

का चयन करें मुझे एक तालिका से पूछताछ करने और 4 कॉलम के मानों में से 3 का चयन करने की आवश्यकता है। मुझे तीसरे कॉलम और चौथे कॉलम के मानों की तुलना करने की आवश्यकता है और बड़े मान का चयन करें।दो कॉलम के मानों की तुलना करें तो बड़े मान

उदाहरण के लिए:

column1 column2 column3 column4 
hello hello  3  5 
hi  hi   7  1 

मैं वापस जाने के लिए की जरूरत है:

column1 column2 Hybrid 
hello hello  5 
hi  hi  7 

मैं उपयोग करने के लिए/else if लेकिन मैं सिर्फ नहीं कर पा रहे वाक्य रचना सही पाने के लिए कोशिश कर रहे हैं

+1

'आईएफ/ईएलएसई 'यहां काम नहीं करता है। – Kermit

+0

परिणाम पर कॉलम हाइब्रिड मूल्य 5 और 7 सही होना चाहिए? – Yaroslav

उत्तर

34

टी-एसक्यूएल में IF आदेश प्रोग्रामेटिक नियंत्रण के लिए है। उदाहरण के लिए:

  • IF x THEN doSQLStatement1 ELSE doSQLStatement2


किसी SQL बयान के भीतर, आप CASE की जरूरत है।

CASE WHEN a > b THEN a ELSE b END 
+1

मुझे इस उत्तर के लिए 10 अपवॉट्स की उम्मीद है। – Kermit

+1

@ एनजेके - हा! :) मुझे शक है...हालांकि दिमाग में नहीं होगा;) – MatBailie

+0

@MatBailie भले ही मैं कुछ और * जटिल की तुलना में जटिल था, मुझे लगता है कि आप इतने विनम्र होने के लिए +1 का हकदार हैं। ओह, और बीटीडब्ल्यू, आपने दस अप-वोट प्राप्त करने का प्रबंधन किया;) –

0
select column1, coloumn2, case when column3 < column4 then column4 else coloum3 end from table. 
+0

ऐसा लगता है कि आपके पास उस स्निपेट में कुछ वर्तनी/वाक्यविन्यास समस्याएं हैं। –

6

इस कोड का प्रयास करें:

SELECT column1, column2, 
     (CASE WHEN column3 > column4 THEN column3 ELSE column4 END) 
    FROM Table1 

परिणाम:

COLUMN1 COLUMN2 Hybrid 
hello  hello  5 
    hi   hi  7 

एसक्यूएल फिडल पर Here you have complete sample

+0

एसक्यूएल फिल्ड उदाहरण लोड नहीं होता है। – mobill

+0

यूएफएफ !! ऐसा लगता है कि नमूना इतना पुराना है कि या तो खो गया था, हटाया गया था या जो भी – Yaroslav

0

मैं एक दृश्य बनाकर शुरू करूंगा।

CREATE VIEW t_c 
SELECT id, c1 AS c FROM t 
UNION 
SELECT id, c2 AS c FROM t; 

तब मैं उस दृश्य से चयन करूंगा।

SELECT id, MAX(c) FROM t_c GROUP BY id; 
2

आप CASE उपयोग कर सकते हैं, लेकिन अगर कोई एक मान 'अशक्त' है, 'अशक्त' सबसे ज्यादा मूल्य माना जाता है।

इस समस्या को हल करने के लिए आप GREATEST

SELECT GREATEST(column3, column4) 
FROM Table1 
+0

यह प्रश्न का उत्तर नहीं देता है। आप [समान प्रश्नों की खोज कर सकते हैं] (https://stackoverflow.com/search), या उत्तर खोजने के लिए पृष्ठ के दाईं ओर संबंधित और जुड़े प्रश्नों का संदर्भ लें। यदि आपके पास एक संबंधित लेकिन अलग प्रश्न है, [एक नया प्रश्न पूछें] (https://stackoverflow.com/questions/ask), और संदर्भ प्रदान करने में सहायता के लिए इस लिंक को शामिल करें। देखें: [प्रश्न पूछें, जवाब प्राप्त करें, कोई विकृति नहीं है] (https://stackoverflow.com/tour) –

0

उपयोग कर सकते हैं बस हमें यह जानकारी नहीं लौटते अशक्त:

with whatever as (
    select null as a, 1 as b 
    UNION 
    select 1 as a, null as b 
    union 
    select 1 as a, 0 as b 
    union 
    select 0 as a, 1 as b 
    union 
    select null as a, null as b 
) 
select(iif(a > b, a, isnull(b, a))) 
from whatever 

चाहिए:

SELECT IIF(a > b, a, COALESCE(a, b)) -- coalesce or isnull 
FROM wherever 

यहाँ यह परीक्षण करने के लिए एक प्रश्न है वापसी

null 
1 
1 
1 
1 
+0

यदि आप ओरेकल का उपयोग कर रहे हैं तो आप केवल ग्रेटेस्ट फ़ंक्शन का उपयोग कर सकते हैं। – user1427302

+0

'IIF'' sql-server-2008' के लिए मौजूद नहीं था, जो प्रश्न को टैग किया गया है। – MatBailie

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