【问题标题】:using case for multiple parameters in where condition using sql使用sql在where条件下使用多个参数的案例
【发布时间】:2017-07-27 13:31:11
【问题描述】:

我有一个如下查询。我想按行返回每个文件名(alter.pdfmodify.pdf)的大小写值。

但是我只得到alter.pdf 的案例值。

SELECT CASE WHEN COUNT(P.[packageid]) > 0 THEN 1 ELSE 0 END AS [VALUE]    
              FROM [Table_1] AS P    
              INNER JOIN    
       [Table_2] AS F on F.FileID = P.FileID  
        WHERE F.FileName IN('alter.pdf','modify.pdf')

【问题讨论】:

  • modify.pdf有记录吗?
  • 是的,条件是如果任何一个 pdf 文件的包 ID 计数 >0 我应该得到一个案例:1 或 0。
  • 你能展示样本数据和预期结果吗?如果您只显示 1 或 0 的 value,您怎么知道 modify.pdf 不在结果中?
  • 为了更清楚,我应该得到 Value 1 1 的结果
  • 请 - 以 DDL+DML 和所需结果的形式采样数据。此外,标记相关的 rdbms(产品和版本)。

标签: sql select case using


【解决方案1】:

我认为您正在寻找这样的东西:

SELECT  F.[FileName]
        , sum(CASE WHEN F.FileName = 'alter.pdf' THEN 1
               WHEN F.FileName = 'modify.pdf' THEN 1
               ELSE 0 
          END AS) [VALUE]             
FROM [Table_1] AS P    
INNER JOIN [Table_2] AS F on F.FileID = P.FileID  
WHERE F.FileName IN('alter.pdf','modify.pdf')
group by F.[FileName]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    相关资源
    最近更新 更多