基于布尔列合并数据的SQL查询

基于布尔列合并数据的SQL查询,sql,sql-server,Sql,Sql Server,我正在尝试基于布尔列合并数据 原始数据: FName LName Status ------------------ x y 1 x y 0 a b 1 t t 1 u e 1 t t 1 a b 0 我想要达到的最终结果 FName LName Yes No ------------------- x y 1 1 a b 1 1 t

我正在尝试基于布尔列合并数据

原始数据:

FName LName Status
------------------
x     y     1
x     y     0
a     b     1
t     t     1
u     e     1
t     t     1
a     b     0
我想要达到的最终结果

FName LName Yes  No
-------------------
x     y     1    1
a     b     1    1
t     t     2    0
u     e     1    0
这是我尝试过的,但没有得到我想要的-

SELECT
    [FirstName], [LastName], COUNT(*) AS No
FROM 
    [dbo].[tablename]  
GROUP BY
    [FirstName], [LastName], [Status] 
HAVING
    COUNT(*) > 1 AND Status = 0 

UNION  

SELECT 
    [FirstName], [LastName], COUNT(*) AS Yes
FROM 
    [dbo].[tablename]  
GROUP BY
    [FirstName], [LastName], [Status] 
HAVING
    COUNT(*) > 1 AND Status = 1

我相信一定有一个简单的方法来实现这一点

您只需要
SUM
CASE
表达式:

SELECT  FName,
        LName,
        SUM(CASE WHEN [Status] = 1 THEN 1 ELSE 0 END) Yes,
        SUM(CASE WHEN [Status] = 0 THEN 1 ELSE 0 END) No
FROM YourTable
GROUP BY FName,
         LName;

您只需要
SUM
CASE
表达式:

SELECT  FName,
        LName,
        SUM(CASE WHEN [Status] = 1 THEN 1 ELSE 0 END) Yes,
        SUM(CASE WHEN [Status] = 0 THEN 1 ELSE 0 END) No
FROM YourTable
GROUP BY FName,
         LName;
可能的方法是

select [FirstName],[LastName], 
   sum(0+[Status]) as Yes,
   count([Status]) - sum(0+[Status]) as No
from [dbo].[tablename]  
group by [FirstName],[LastName]
0+[Status]
隐式地将位[Status]转换为整数。

可能的方法是

select [FirstName],[LastName], 
   sum(0+[Status]) as Yes,
   count([Status]) - sum(0+[Status]) as No
from [dbo].[tablename]  
group by [FirstName],[LastName]

0+[Status]
隐式地将位[Status]转换为整数。

非常感谢,我只是一个简单的问题,我该如何计算百分比,想要类似(无/总请求数)的值*100@learner999为此,了解您正在使用的SQL Server 2014的版本会有所帮助非常感谢,只是一个简单的问题,我如何计算百分比,希望类似(无/总请求数)*100@learner999为此,了解您使用的SQL Server 2014的版本会有所帮助