基于布尔列合并数据的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的版本会有所帮助