2010-11-10 19 views
5

Jeśli jedno pole w bazie danych jest równe czemuś, chcę wybrać wartość innego pola. Myślałem, że mogę użyć CASE THEN, ale nie mogę go dostać, aby zwrócić wartość pola.Używanie CASE do wyboru pola w SQL?

Oto, co starałem dotąd:

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

JobNo to nazwa pola, które chcę, aby uzyskać wartość z.

+0

jakiego typu bazy danych ? –

Odpowiedz

10

tracisz oświadczenie innego w swoim oświadczeniu przypadku, po to tam powinien działać

takiego:

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

spróbować

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

Trzeba zdefiniować ELSE:

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

mam zaległości zwrócić imię, jeśli nie chcemy po prostu zastąpić czymś innym. Tylko upewnij się, że typy danych są równoważne, aby uniknąć potencjalnych problemów (założyłem, że JobNo jest varchar ref code dla celów demonstracji składni).

+0

* niedopasowanie typu kaszel * kaszel * –

0

Oto ona:

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

SQL Składnia wydaje mi się poprawna. Sam to wypróbowałem i działa dobrze. Być może brakuje ci czegoś innego. Poniżej przedstawiono przykładowe dane wyjściowe otrzymuję, alt text

0

Dodawanie warunku inny nie będzie bolało, ale może trzeba także nazwę kolumny do nowej kolumny - tak:

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