加入收藏 | 设为首页 | 会员中心 | 我要投稿 泰州站长网 (https://www.0523zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何在SQL中的Case子句中插入Select语句

发布时间:2022-10-11 19:30:39 所属栏目:MsSql教程 来源:网络
导读: 如何在SQL中的Case子句中插入Select语句
sqlsql-server
如何在SQL中的Case子句中插入Select语句,sql,sql-server,Sql,Sql Server,SQL知识初学者我有一张下表:记分表Name Score Reason S

如何在SQL中的Case子句中插入Select语句

sqlsql-server

如何在SQL中的Case子句中插入Select语句,sql,sql-server,Sql,Sql Server,SQL知识初学者我有一张下表:记分表Name Score Reason Subject a10NULLNULLa2-1 NULLNULLa3-3 failMathsa4-3 failHistorya30 NULLNULL我想写一个如下所示的查询Select DISTINCT Name, Result,(If Resu

SQL知识初学者

我有一张下表:记分表

Name  Score  Reason  Subject 
a1      0     NULL     NULL
a2      -1    NULL     NULL
a3      -3    fail     Maths
a4      -3    fail     History
a3       0    NULL     NULL

我想写一个如下所示的查询

Select DISTINCT Name, Result, 
   (If Result = -3 
      then Concat(Reason,' ',Subject))As FailedIn)

从记分表

Name  Score  Reason  Subject 
a1      0     NULL     NULL
a2      -1    NULL     NULL

a3      -3    fail     Maths
a4      -3    fail     History
a3       0    NULL     NULL

预期产出:

Name  Score  FailedIn 
a1      0     0
a2      -1    0
a3      -3    fail Maths
a4      -3    fail History

您可能不想将“0”和字符串放在同一列中。最好使用

NULL

。因此:

Select Name, Result, 
       (case when Result = -3 then Reason + ' ' + Subject
        end) as FailedIn

不清楚最后一行消失的原因,但您可能希望看到以下内容:

Select Name, min(Result), 
       (case when min(Result) = -3 then max(Reason + ' ' + Subject)

        end) as FailedIn
from table t
group by name

尝试使用CASE..WHEN..然后像下面一样使用最低结果分数:

SELECT Name, MIN(Result)
   CASE WHEN Result = -3 
        THEN Reason +' '+Subject 
        ELSE Result 
   END As FailedIn
FROM mytable
GROUP BY Name, Result

试试这个

选择名称、分数、,分数为-3时的情况mssql 在表中插入,然后是CONCAT(原因,,,主题)其他“0”从记分表中以失败结束

Name  Score  Reason  Subject 
a1      0     NULL     NULL
a2      -1    NULL     NULL
a3      -3    fail     Maths
a4      -3    fail     History
a3       0    NULL     NULL

(编辑:泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!