SQL Server中,在“case”语句内部使用选择语句

10

有人可以帮我在SQL Server中找到正确的语法吗?我在一个较大的查询中有类似这样的东西。

VSCS.ISCOTEACH,
VSCS.NoMARKS,
CASE (SELECT COUNT(*) FROM tbl_CoTeacher COTH WHERE    COTH.CLAS_METG_TIME_PK=VSCS.CLAS_METG_TIME_PK
        AND ISNULL(COTH.DELT_FLAG,0)=0) > 0 THEN 1 ELSE 0 END AS HASCOTEACH),

第三行当然是不正确的,基本上我想要一个名为 HASCOTEACH 的列,如果查询 SELECT COUNT(*) FROM tbl_CoTeacher COTH WHERE COTH.CLAS_METG_TIME_PK=VSCS.CLAS_METG_TIME_PK AND ISNULL(COTH.DELT_FLAG,0)=0 返回一个大于 1 的值,则该列应包含 1,否则为 0。

2个回答

9
您可以尝试像这样做。
(CASE when (SELECT COUNT(*) FROM tbl_CoTeacher COTH WHERE    COTH.CLAS_METG_TIME_PK=VSCS.CLAS_METG_TIME_PK
        AND ISNULL(COTH.DELT_FLAG,0)=0) > 0 THEN 1 ELSE 0 END) AS HASCOTEACH

1
尝试以下类似的内容:

像下面这样尝试:

VSCS.ISCOTEACH,
VSCS.NoMARKS,
CASE WHEN 
      (
       SELECT COUNT(*) FROM tbl_CoTeacher COTH WHERE COTH.CLAS_METG_TIME_PK=VSCS.CLAS_METG_TIME_PK
       AND ISNULL(COTH.DELT_FLAG,0)=0
       ) > 0 THEN 1 ELSE 0 END AS HASCOTEACH,

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接