我使用分组查询来获得所需的输出
I used group by query to get desired output
这是我的表 (Tbl_12042014),其中包含 recordId、batchName、SubaBatchname、OpStatus1、OpStatus2 等字段。
RecordId Batchname SubBatchname OpStatus1 OpStatus2
1 12042014 raw3 D D
2 12042014 raw3 D D
3 12042014 raw4 Null Null
4 12042014 raw4 Null Null
我将此查询与 group by 一起使用,但没有得到所需的输出。
我想要计算 recordId 和列,其中具有各自子批次名称的 Status 'D'。
应拒绝具有空值的字段。
查询
SELECT BatchName,SubBatchName,Count(RecordId)AS Records,
(Select count ( a.Opstatus1) FROM Tbl_12042014 as a where Opstatus1='D' ) as DE1,
(Select count(b.Opstatus2) FROM Tbl_12042014 as b where Opstatus2='D' )as DE2
FROM Tbl_12042014 GROUP BY BatchName, SubBatchName
我通过执行上面的查询得到了类似的输出。我得到了 DE1,DE2 计数是 2 for raw3 and 2 for raw4.
Batchname SubBatchname Records DE1 DE2
12042014 raw3 2 2 2
12042014 raw4 2 2 2
但是我想要的输出像 DE1,DE2 应该是 2 for raw3 和 0 for raw4。
Batchname SubBatchname Records DE1 DE2
12042014 raw3 2 2 2
12042014 raw4 2 0 0
你可以用 case based aggregation
SELECT BatchName,SubBatchName, Count(RecordId)AS Records,
sum(case when Opstatus1='D' then 1 else 0 end) as DE1,
sum(case when Opstatus2='D' then 1 else 0 end) as DE2
FROM Tbl_12042014 GROUP BY BatchName, SubBatchName
这是我的表 (Tbl_12042014),其中包含 recordId、batchName、SubaBatchname、OpStatus1、OpStatus2 等字段。
RecordId Batchname SubBatchname OpStatus1 OpStatus2
1 12042014 raw3 D D
2 12042014 raw3 D D
3 12042014 raw4 Null Null
4 12042014 raw4 Null Null
我将此查询与 group by 一起使用,但没有得到所需的输出。
我想要计算 recordId 和列,其中具有各自子批次名称的 Status 'D'。
应拒绝具有空值的字段。
查询
SELECT BatchName,SubBatchName,Count(RecordId)AS Records,
(Select count ( a.Opstatus1) FROM Tbl_12042014 as a where Opstatus1='D' ) as DE1,
(Select count(b.Opstatus2) FROM Tbl_12042014 as b where Opstatus2='D' )as DE2
FROM Tbl_12042014 GROUP BY BatchName, SubBatchName
我通过执行上面的查询得到了类似的输出。我得到了 DE1,DE2 计数是 2 for raw3 and 2 for raw4.
Batchname SubBatchname Records DE1 DE2
12042014 raw3 2 2 2
12042014 raw4 2 2 2
但是我想要的输出像 DE1,DE2 应该是 2 for raw3 和 0 for raw4。
Batchname SubBatchname Records DE1 DE2
12042014 raw3 2 2 2
12042014 raw4 2 0 0
你可以用 case based aggregation
SELECT BatchName,SubBatchName, Count(RecordId)AS Records,
sum(case when Opstatus1='D' then 1 else 0 end) as DE1,
sum(case when Opstatus2='D' then 1 else 0 end) as DE2
FROM Tbl_12042014 GROUP BY BatchName, SubBatchName