我在表格中有以下数据
Country State RequestStatus
India MP 0
India MP 1
Usa At 0
Usa At 0
如何在MSSql查询中分组国家和州的所有已完成,待处理和总请求。
0: Pendint
1: Complete
输出应该是下面的
Country State Total Pending Complete
India MP 2 1 1
USA At 2 2 0
答案 0 :(得分:2)
SELECT Country,State , COUNT(* ) AS Total
,SUM(CASE WHEN RequestStatus = 0 THEN 1 ELSE 0 END ) AS Pending
,SUM(CASE WHEN RequestStatus = 1 THEN 1 ELSE 0 END ) AS Complete
FROM @Test T
GROUP BY Country,State
答案 1 :(得分:1)
使用此:
select country, [state],
count(*) as Total,
sum(case when requeststatus = 0 then 1 else 0 end) as Pending,
sum(case when requeststatus = 1 then 1 else 0 end) as Complete
from tbl
group by country, [state]
我们首先按国家和州分组以获取汇总数据。然后,为了根据特定条件计算总数,我们使用case
构造来过滤掉匹配的记录。例如如果我们只想获得待处理的请求,我们只会在requeststatus = 0
时递增计数器。
答案 2 :(得分:0)
您可以使用CREATE TABLE #yourTable(Country nvarchar(10), State nvarchar(5), RequestStatus bit)
INSERT INTO #yourTable(Country, State, RequestStatus)
VALUES(N'India', N'MP', 0), (N'India', N'MP', 1)
SELECT *
FROM #yourTable
PIVOT (
COUNT(State)
FOR RequestStatus IN([0],[1])
) as PVT
DROP TABLE #yourTable
作为示例。
curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{
"script" : "ctx._source.tags.contains(tag) ? (ctx.op = \"none\") : ctx._source.tags += tag"
"params" : {
"tag" : "blue"
}
}'
但这主要取决于您的预期结果。也许你想要通过RequestStatus计算MP和组ID。但我不确定,因为你没有为此提供示例输出。