2010-11-10 16 views
5

Veritabanındaki bir alanın bir şeye eşit olup olmadığına bağlı olarak, başka bir alanın değerini seçmek istiyorum. CASE THEN'u kullanabileceğimi düşünüyordum ama bir alanın değerini döndürmek için alamıyorum. İşte SQL'de bir alan seçmek için CASE kullanma?

Ben şimdiye kadar denedim budur:

SELECT LastName, CASE FirstName WHEN 'Ian' THEN JobNo END FROM Employees 

JobNo ben değeri almak istiyorum alanın adıdır.

+0

Ne tip ? –

cevap

10

Eğer case ifadesi başka deyimi kaçırıyoruz, böyle

çalışması gerekir: Burada

SELECT LastName, 
    CASE FirstName WHEN 'Ian' THEN JobNo ELSE -1 END 
FROM Employees 
2

bu

SELECT LastName, CASE WHEN FirstName ='Ian' THEN JobNo else null END 
FROM Employees 
1

Sen BAŞKA tanımlamanız gerekir deneyin: Ben sadece başka bir şey ile değiştirin olduğunu istemiyorsanız, Ad dönmek için varsayılan ettik

SELECT LastName, CASE FirstName WHEN 'Ian' THEN JobNo ELSE FirstName END 
FROM Employees 

. Yalnızca veri türlerinin olası sorunları önlemek için eşdeğer olduğundan emin olun (JobNo'nun sözdizimini gösterme amacıyla bir varchar ref kodu olduğunu varsayalım). Bu Oraya girince

+0

* öksürük * tipi uyumsuzluk * öksürük * –

0

öyle:

SELECT LastName, 
    JobNo = CASE 
     WHEN FirstName = 'Ian' THEN JobNo END 
FROM Employees 
0

sql sözdizimi bana doğru görünüyor. Kendim denedim ve iyi çalışıyor. Başka bir şey kaçırıyor olabilirsin. Aşağıdaki zarar vermez bir ELSE koşul ekleme alıyorum örnek çıktısı, alt text

0

olduğunu, ama aynı zamanda yeni sütun için bir sütun adı gerekebilir - şöyle: veritabanının

SELECT LastName, 
     CASE FirstName 
      WHEN 'Ian' THEN JobNo 
      ELSE 0 
     END IansJobNo 
FROM Employees 
İlgili konular