这是ASP.net SQL数据库中的查询:
SELECT OpenWorkWeek, COUNT(Validation) AS Invalid, COUNT(Validation) AS Valid
FROM Email
GROUP BY OpenWorkWeek, Validation
ORDER BY OpenWorkWeek
输出:
WorkWeek Invalid Valid
-----------------------
WW 01 4 4
WW 01 52 52
WW 02 21 21
WW 02 231 231
我想要显示的结果应该是这样的:
WorkWeek Invalid Valid
------------------------
WW 01 4 52
WW 02 21 231
请查询帮助!
谢谢! :)
答案 0 :(得分:1)
您必须发布Validation
Column
的值,以便我们可以获得Count
Validation
的值。
例如,考虑Validation
的值为
Validation
----------
Valid
InValid
InValid
Valid
Valid
所以查询将是
SELECT OpenWorkWeek, SUM(Case When Validation = 'Valid' Then 1 Else 0 End) AS Valid,
SUM(Case When Validation = 'InValid' Then 1 Else 0 End) AS InValid
FROM Email
GROUP BY OpenWorkWeek
ORDER BY OpenWorkWeek
输出
WorkWeek Invalid Valid
------------------------
WW 01 4 52
WW 02 21 231
您可以根据validation
值
修改强>
要获得有效和无效的分部结果,请尝试这样。
SELECT OpenWorkWeek,Valid,Invalid, (Cast(Valid As Decimal)/ Cast(InValid As Decimal)) As Percentage
From
(
SELECT OpenWorkWeek, SUM(Case When Validation = 'Valid' Then 1 Else 0 End) AS Valid,
SUM(Case When Validation = 'InValid' Then 1 Else 0 End) AS InValid
FROM Email
GROUP BY OpenWorkWeek
ORDER BY OpenWorkWeek
)Tmp
答案 1 :(得分:1)
如果您需要每个工作周的结果记录,则应按工作周分组,而不是按周工作加验证。要获得有效和无效的计数,只需在每次匹配时加1即可。在您的评论中,您说验证是“有效”或“无效”,因此:
SELECT OpenWorkWeek,
SUM( CASE WHEN Validation = 'invalid' THEN 1 END ) AS Invalid
SUM( CASE WHEN Validation = 'valid' THEN 1 END ) AS Valid
FROM Email
GROUP BY OpenWorkWeek
ORDER BY OpenWorkWeek;