计算 SQL Server 2008 视图中跨列的特定值

Cli*_*nch 1 t-sql sql-server view count sql-server-2008-r2

我有以下数据:


   ID Column1 Column2 Column3 Column4 Column5
   001   A        C       D        A      B
   002   A        D       A        B      A
   003   B        K       Q        C      Q
   004   A        K       E        E      B
Run Code Online (Sandbox Code Playgroud)

我想在视图中创建一个新列,该列给出每行 5 个源列中“A”的计数。结果应该是这样的:

    ID Column1 Column2 Column3 Column4 Column5  SumOfA
    001   A        C       D        A      B       2
    002   A        D       A        B      A       3
    003   B        K       Q        C      Q       0
    004   A        K       E        E      B       1
Run Code Online (Sandbox Code Playgroud)

我在这里看到了几个示例,但它们返回跨记录的“A”实例 - 我想要跨列的“A”计数,而不是跨行聚合。有什么想法吗?

Tar*_*ryn 5

您可以使用多个CASE表达式来计算A值:

select id,
  column1, 
  column2,
  column3,
  column4, 
  column5,
  case when column1 = 'A' then 1 else 0 end +
  case when column2 = 'A' then 1 else 0 end +
  case when column3 = 'A' then 1 else 0 end +
  case when column4 = 'A' then 1 else 0 end +
  case when column5 = 'A' then 1 else 0 end TotalA
from yourtable
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle 演示