Sql 如何选择在一列中计算多个值

Sql 如何选择在一列中计算多个值,sql,sql-server,Sql,Sql Server,我是SQL的新手,所以请温柔一点……因为我认为这是一个基本的问题 我试图根据Column1编写一个具有多(13)个计数的查询。第一个计数是总计数。然后对其他12个进行颜色过滤。我可以通过在一个查询中进行多次计数来获得结果,但这会给我13行数据。这里的目标是将所有内容都放在一行上。所以,几乎每个计数都是它自己的列。下面是数据模型的一个示例 Database = CARS, Table = TYPES, Column1 = LICENSE, Column2 = COLOR 以及每种剩余颜色的on

我是SQL的新手,所以请温柔一点……因为我认为这是一个基本的问题

我试图根据Column1编写一个具有多(13)个计数的查询。第一个计数是总计数。然后对其他12个进行颜色过滤。我可以通过在一个查询中进行多次计数来获得结果,但这会给我13行数据。这里的目标是将所有内容都放在一行上。所以,几乎每个计数都是它自己的列。下面是数据模型的一个示例

Database = CARS, Table = TYPES, Column1 = LICENSE, Column2 = COLOR


以及每种剩余颜色的on&on&on。这是可行的,但是,如果可能的话,我正试图将其简化为一行数据。提前感谢您

您可以使用有条件的
求和()来完成此操作

如果使用MySQL,您可以进一步简化:

SELECT SUM(Color = 'Red') AS 'Total Red Cars'
      ,SUM(Color = 'Blue') AS 'Total Blue Cars'
FROM CARS.TYPES

您只需在select语句中包含颜色,并按其分组,即可计算每种颜色的汽车数量

 SELECT Color, Count(*)
 FROM CARS.TYPES WITH(NOLOCK)
 GROUP BY Color


或使用
PIVOT

SELECT RED + BLUE + GREEN AS total,
       RED,
       BLUE,
       GREEN
FROM   CARS.TYPES PIVOT (COUNT (LICENSE) FOR COLOR IN ([RED], [BLUE], [GREEN])) P 

您可以使用
SUM(Color='Red')
@DanielSparing取决于数据库,这在MySQL中有效,但在SQL Server中无效。很公平,很高兴了解SQL Server,谢谢<代码>与(NOLOCK)是由SQL Server Thx Goat CO.完成的。现在我确实在某些颜色上有一些空值,有没有一种方法可以将它们从显示中删除?可能是迄今为止最好的解决方案的重复,它计算的值是以前不知道的。这里很简单。
 SELECT Color, Count(*)
 FROM CARS.TYPES WITH(NOLOCK)
 GROUP BY Color
SELECT COUNT(CASE WHEN Color = 'RED' THEN 1
                  ELSE NULL
             END) AS RedCars
       ,COUNT(CASE WHEN Color = 'BLUE' THEN 1
                   ELSE NULL
              END) AS BlueCars
       ,COUNT(*) AS AllCars
    FROM CARS.TYPES WITH ( NOLOCK )
SELECT RED + BLUE + GREEN AS total,
       RED,
       BLUE,
       GREEN
FROM   CARS.TYPES PIVOT (COUNT (LICENSE) FOR COLOR IN ([RED], [BLUE], [GREEN])) P 
 SELECT SUM(Al) AllCount, SUM(Red) RedCount, SUM(Green) GreenCount, ...
 (  
   SELECT 1 AS Al 
   , CASE WHEN Color = 'Red' THEN 1 ELSE 0 END AS Red 
   , CASE WHEN Color = 'Green' THEN 1 ELSE 0 END AS Green
   ... 
   FROM CARS.Types
 )