2010-11-10 24 views
5

Dựa trên nếu một trường trong cơ sở dữ liệu bằng một cái gì đó, tôi muốn chọn giá trị của một trường khác. Tôi đã nghĩ rằng tôi có thể sử dụng CASE THEN nhưng tôi không thể làm cho nó trả về giá trị của một trường.Sử dụng CASE để chọn một trường trong SQL?

Dưới đây là những gì tôi đã cố gắng cho đến nay:

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

JobNo là tên của các lĩnh vực mà tôi muốn có được giá trị từ.

+0

loại gì của cơ sở dữ liệu ? –

Trả lời

10

bạn đang bỏ lỡ những tuyên bố khác trong báo cáo trường hợp của bạn, một khi đó là trong đó nó cũng làm việc

như thế này:

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

thử này

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

Bạn cần phải xác định ELSE:

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

tôi đã mặc định để trả lại FirstName, nếu bạn không muốn điều đó chỉ cần thay thế với cái gì khác. Chỉ cần đảm bảo các kiểu dữ liệu tương đương để tránh các vấn đề tiềm ẩn (tôi đã giả định JobNo là một mã ref của varchar với mục đích minh họa cú pháp).

+0

* ho * loại không phù hợp * ho * –

0

Ở đây là:

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

Các sql cú pháp có vẻ đúng với tôi. Tôi đã thử nó và làm việc tốt. Có thể bạn đang thiếu cái gì khác. Sau đây là một đầu ra mẫu tôi nhận được, alt text

0

Thêm một điều kiện khác sẽ không làm tổn thương, nhưng bạn cũng có thể cần một tên cột cho cột mới của bạn - như vậy:

SELECT LastName, 
     CASE FirstName 
      WHEN 'Ian' THEN JobNo 
      ELSE 0 
     END IansJobNo 
FROM Employees 
Các vấn đề liên quan