【问题标题】:select rows from table and check if condition at column in sql从表中选择行并检查sql中列的条件
【发布时间】:2015-03-17 07:07:53
【问题描述】:

我必须检查表中的某些行并检查每行的if-else 条件

表:report

列: sl.nocounttotal_countcalls

样本数据:

sl.no       count       total_count calls
----------- ----------- ----------- -----------
1           2           6           4
2           2           7           5
3           4           9           3

这里我要检查条件

 if total_count > 6
 select 'Y
 else 
select 'N'

我得到单行的正确答案。如果有多行,它不能检查所有,它只检查我表的最后一行。

【问题讨论】:

    标签: sql sql-server database ssms


    【解决方案1】:

    使用CASE 表达式

    SELECT
        *,
        CASE WHEN total_count > 6 THEN 'Yes' ELSE 'N' END
    FROM report
    

    【讨论】:

    • 在这里有效。伟大的。但我必须检查同一张表中的另一列,即。 count =2 then 'yes' else 'no' case condition 怎么能在这里工作。
    • 同理。只需使用CASE WHEN count = 2 THEN 'yes'...
    【解决方案2】:

    您必须使用 CASE。它的工作方式类似于 t-SQL 中的 if-else。 MSDN

    例如:

    SELECT [num],[count], [total_count], [calls], CASE WHEN [total_count] > 6 THEN 'Y' ELSE 'N' END FROM t
    

    【讨论】:

      【解决方案3】:

      您可以使用CASE。你可以阅读documentation

      SELECT *, 
             CASE WHEN total_count > 6 THEN 'Y' ELSE ' N' END
      FROM   Report
      

      【讨论】:

      • 如果他使用的是SQL Server 2012或更高版本,他也可以使用SELECT *, IIF(total_count > 6, 'Y', 'N') FROM Reports
      • 只是另一种方法。仅此而已。
      【解决方案4】:

      "inline if"的SQL版本是CASE

      SELECT 
          *,       
          CASE WHEN total_count > 6 THEN 'Y'
          ELSE 'N'
          END AS IsTotalCountGreaterThanSix
      FROM YourTable;
      

      【讨论】:

        猜你喜欢
        • 2022-01-21
        • 2018-07-31
        • 1970-01-01
        • 1970-01-01
        • 2022-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-01
        相关资源
        最近更新 更多