繁体   English   中英

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

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

嗨,我处于令人困惑的状态下运行Sql查询,我的表看起来像这样

在此处输入图片说明

从上图可以看到两列。 第一列包括学生的登记号。 第二栏包括他/她的考试成绩。 P声明他在某项主题中获得通过。在报告中,我想要以下结果集。 如果结果包含任何数字,则他在下一个主题中会失败。

  • 1 --->英语2 --->梵语3 --->数学4 --->科学5 --->社交

我希望结果应该是这样的。 任何人都可以在这方面帮助我。 我没有任何想法。

在此处输入图片说明

尝试以下查询

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