2014-09-02 92 views
0

数据库结构中的两个或多个列:比较在SQL

  • 表名:question
  • 色谱柱:qid, que, a, b, c, d, ans

伪数据1:

Qid-1 
Que-what is capital of india ? 
A- mumbai 
B- delhi 
C-kolkata 
D-chennai 
Ans-B 

伪数据2:

Qid-2 
Que-formula of water ? 
A- h2O 
B- h30 
C-h40 
D-h50 
Ans-A 

所需的输出:

Que        ans 
what is capital of india ?   Delhi 
Formula of water ?     H20 

如何最后一列(ans)与其他列(a, b, c, d)比较?

我需要一个SQL查询。

在此先感谢。

+0

使用case语句,如:ANS的情况下,当 'A' 然后当 'B' 次en b ... – Arvo 2014-09-02 08:56:46

+0

MYSQL或SQL SERVER – Sathish 2014-09-02 09:00:12

+0

M.s.访问2003 – logisoul 2014-09-02 09:03:42

回答

0

尝试这样

select que, 
    switch(
    ans = 'A', A 
    , ans = 'B', B 
    , ans = 'C', C 
    , ans = 'D', D 
) 
from table1 

OR

select que, IIf(ans='A', A, IIf(ans='B',B,IIf(ans='C',C,D))) from table1 
+0

感谢satish。有用 !! :) – logisoul 2014-09-02 09:36:48

0

正如我理解你需要解码ans到正确的列。 假设答案“A”表示:列的返回值,答案“B” - B等列的返回值,在Oracle中我会做这样的(真实表未测试):

SELECT que, decode(ans, 'A', a, 'B', b, 'C', c, 'D', d, 'No answer') FROM question 

帕维尔