SQL COUNT行结果在单独的列中

Rya*_*yan 8 sql sql-server

我目前使用它来计算表中的所有数字或行,它可以很好地满足我的需要.

SELECT COUNT(*) AS STCount 
  FROM  (SELECT Distinct DPoint, RNum 
           FROM ECount  
          WHERE DType = 'STR' AND Month(EDate) = '07') AS rows
Run Code Online (Sandbox Code Playgroud)

我唯一的问题是我必须重复这个陈述,而每次只改变一些事情.我想联合这些选择,但结果显示在一个单独的列中,下面的示例工作获取结果但将它们全部放在同一列中.任何想法如何让他们在自己的专栏中显示一个STCount和NCCount?

SELECT COUNT(*) AS STCount 
  FROM (SELECT Distinct DPoint, RNum 
          FROM ECount  
         WHERE DType = 'STR' AND Month(EDate) = '07') AS rows 
 UNION 
SELECT COUNT(*) AS NCCount 
  FROM (SELECT Distinct DPoint, RNum 
          FROM ECount  
         WHERE DType = 'NCD' AND Month(EDate) = '07') AS rows
Run Code Online (Sandbox Code Playgroud)

结果会是,

STCount NCCount
  100     202
Run Code Online (Sandbox Code Playgroud)

Ric*_*ard 12

你可以在select条款中做选择而不需要from.

select (select count(1)
        from  (select distinct DPoint, RNum 
               from ECount
               where DType = 'STR' 
                 and Month(EDate) = '07') as x
       ) as rows1,
      (select count(1)
       from  (select distinct DPoint, RNum 
              from ECount  
              where DType = 'NCD' 
                and Month(EDate) = '07') as x
      ) as rows2;
Run Code Online (Sandbox Code Playgroud)


TOU*_*sim 6

您可以使用CASE:

SELECT 
    COUNT (CASE WHEN DType = 'STR' THEN (1)  ELSE NULL END) AS STCount,
    COUNT (CASE WHEN DType = 'NCD' THEN (1)  ELSE NULL END) AS NCCount
    FROM (Select Distinct DType, DPoint, RNum From ECount WHERE Month(EDate) = '07') as rows
Run Code Online (Sandbox Code Playgroud)