2015-07-03 156 views
-4

我需要幫助來解決這個查詢...複雜MSSQL查詢

寫一個查詢這將顯示以下格式的學生ID和標準。

如果標準爲'V'則顯示'FIFTH STANDARD',如果標準爲'IV'則顯示'FOURTH STANDARD',如果標準爲'III'則顯示'THIRD STANDARD',如果標準爲'II'則顯示'SECOND STANDARD ',如果標準是'我'在列名'STDINWORDS'下顯示'FIRST STANDARD',並按照標準降序排列。

提示:查詢應該顯示查詢中提到的確切字符串,例如'FIFTH STANDARD'等,並按問題陳述中給出的方式使用。 實施例: S-125第一標準

提示: 'S-125' 是列StudentID的值。

+0

爲什麼這個標記爲MySQL的? – winmutt

+0

@winmutt,因爲我的審查員正在使用mysql執行,我認爲可能有一些內置的mysql函數來幫助解決這個查詢。 –

回答

1

您將需要尋找到CASE聲明這一點。既然你沒有提供任何樣本數據,這裏是根據我的理解一個解決方案:

create table student (student_id varchar(255), standard varchar(255)); 

insert into student values 
('S-125','I'), 
('S-126','II'), 
('S-127','III'), 
('S-128','IV'), 
('S-129','V'); 

SELECT student_id 
    ,standard 
    ,CASE standard 
     WHEN 'I' 
      THEN 'FIRST STANDARD' 
     WHEN 'II' 
      THEN 'SECOND STANDARD' 
     WHEN 'III' 
      THEN 'THIRD STANDARD' 
     WHEN 'IV' 
      THEN 'FOURTH STANDARD' 
     WHEN 'V' 
      THEN 'FIFTH STANDARD' 
     END AS StdInWords 
    ,CASE standard 
     WHEN 'I' 
      THEN 1 
     WHEN 'II' 
      THEN 2 
     WHEN 'III' 
      THEN 3 
     WHEN 'IV' 
      THEN 4 
     WHEN 'V' 
      THEN 5 
     END AS SortBy_Field 
FROM student 
ORDER BY SortBy_Field DESC; 

SQL Fiddle Demo

+0

答案應該是這樣的:S-125第一個標準 –

+0

還是要謝謝你..我找到了正確的查詢使用方法。選擇CONCAT(student_id數據 \t「,「 \t,CASE標準 \t \t WHEN '我' \t \t \t THEN '第一標準' \t \t WHEN 'II' \t \t \t THEN '第二標準' \t \t WHEN 'III' \t \t \t THEN 'THIRD STANDARD' \t \t如果 'IV' \t \t \t THEN '第四STANDARD' \t \t如果 'V' \t \t \t THEN 'FIFTH STANDARD' \t \t END)AS StdInWords FROM學生 ORDER BY標準DESC; –

+0

酷!現在,如果你可以請幫我一個忙,並將其標記爲可接受的答案,因爲這個解決方案幫助你解決了你的問題,那太棒了! – FutbolFan