如何根据SQL Server中的列值获取计数

时间:2016-05-16 19:07:56

标签: sql sql-server count

我在SQL Server中有这个表

name    type    date
aaa     A       2016-05-05
aaa     A       2016-05-22
aaa     B       2016-05-21
bbb     A       2016-05-15
bbb     B       2016-05-01

我希望进行查询以获得此结果

name    count(type)
aaa     2.5
bbb     1.5

注意:对于A,计数必须增加1,对于B增加0.5,因为我有这个规则:

count(type)=count(A)+count(B)/2 

3 个答案:

答案 0 :(得分:3)

试试这个:

SELECT SUM(CASE type WHEN 'A' THEN 1.0 WHEN 'B' THEN 0.5 END)
FROM mytable
GROUP BY name

答案 1 :(得分:2)

SELECT 
    SUM(
        CASE type 
            WHEN 'B' THEN 0.5 
            WHEN 'A' THEN 1 
        END)
FROM <Table Name>
GROUP BY name

答案 2 :(得分:0)

您可以使用CASE进行如下计算:     SELECT SUM(CASE                 当Type =&#39; A&#39;                    然后1                    ELSE 0            END)作为SumA,SUM(CASE                 当Type =&#39; B&#39;                    那么0.5                    ELSE 0            END)作为Sum220     从你的表