![](/img/trans.png)
[英]How To Convert Rows Into Column In Single Select Query SQL Server 2008 R2
[英]How to make Single Column into Rows in Sql Server 2008 R2?
嗨,我处于令人困惑的状态下运行Sql查询,我的表看起来像这样
从上图可以看到两列。 第一列包括学生的登记号。 第二栏包括他/她的考试成绩。 P声明他在某项主题中获得通过。在报告中,我想要以下结果集。 如果结果包含任何数字,则他在下一个主题中会失败。
我希望结果应该是这样的。 任何人都可以在这方面帮助我。 我没有任何想法。
尝试以下查询
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.