简体   繁体   English

如何在SQL Server 2008 R2中使单列成行?

[英]How to make Single Column into Rows in Sql Server 2008 R2?

Hi i am in confusing state to run an Sql Query, My table looks like this 嗨,我处于令人困惑的状态下运行Sql查询,我的表看起来像这样

在此处输入图片说明

from the above image there are two columns. 从上图可以看到两列。 First column consists of Register No of the student. 第一列包括学生的登记号。 Second Column Consists his/Her Exam Results. 第二栏包括他/她的考试成绩。 P States he is passed in the Certain Subject.In the report i want result set like the below. P声明他在某项主题中获得通过。在报告中,我想要以下结果集。 If the Result consists any number he is failed in the following subject. 如果结果包含任何数字,则他在下一个主题中会失败。

  • 1--->English 2--->Sanskrit 3--->Maths 4--->Science 5--->Social 1 --->英语2 --->梵语3 --->数学4 --->科学5 --->社交

i want the result should be like this. 我希望结果应该是这样的。 Can any body help me in this. 任何人都可以在这方面帮助我。 i am not getting any idea. 我没有任何想法。

在此处输入图片说明

Try Below Query 尝试以下查询

SELECT RegisterNo,'English' AS Subject ,
     CASE WHEN SUBSTRING(Result+ SPACE(5),1,1) = 'P' THEN 'Pass'
          WHEN ISNUMERIC(SUBSTRING(Result+ SPACE(5),1,1)) = 1 THEN 'Fail'
          ELSE 'Invalid' END AS Result
FROM table1
UNION ALL 
SELECT RegisterNo,'Sanskrit' AS Subject ,
     CASE WHEN SUBSTRING(Result+ SPACE(5),3,1) = 'P' THEN 'Pass'
          WHEN ISNUMERIC(SUBSTRING(Result+ SPACE(5),3,1)) = 1 THEN 'Fail'
          ELSE 'Invalid' END AS Result
FROM table1
UNION ALL 
SELECT RegisterNo,'Maths' AS Subject ,
       CASE WHEN SUBSTRING(Result+ SPACE(5),5,1) = 'P' THEN 'Pass'
            WHEN ISNUMERIC(SUBSTRING(Result+ SPACE(5),5,1)) = 1 THEN 'Fail'
            ELSE 'Invalid' END AS Result
FROM table1
UNION ALL 
SELECT RegisterNo,'Science' AS Subject ,
       CASE WHEN SUBSTRING(Result+ SPACE(5),7,1) = 'P' THEN 'Pass'
            WHEN ISNUMERIC(SUBSTRING(Result+ SPACE(5),7,1)) = 1 THEN 'Fail'
            ELSE 'Invalid' END AS Result
FROM table1
UNION ALL 
SELECT RegisterNo,'Social' AS Subject ,
       CASE WHEN SUBSTRING(Result+ SPACE(5),9,1) = 'P' THEN 'Pass'
            WHEN ISNUMERIC(SUBSTRING(Result+ SPACE(5),9,1)) = 1 THEN 'Fail'
            ELSE 'Invalid' END AS Result
FROM table1
ORDER BY RegisterNo

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM