tsql ssrs延迟订单的百分比

tsql ssrs延迟订单的百分比,tsql,reporting-services,Tsql,Reporting Services,我对tsql和ssrs非常陌生,到目前为止我只接受了3天的训练,所以要温柔! 我试图写一份报告,显示每个月订单延迟的次数,并显示我们按时完成的百分比。到目前为止,我已经做到了: SELECT COUNT(*) AS NoOfWo, CASE WHEN DATEDIFF(d, CompletionDate, LastActualCompDate) <= 0 THEN 'OnTime' ELSE 'Late' END AS Performance, DATENAME

我对tsql和ssrs非常陌生,到目前为止我只接受了3天的训练,所以要温柔! 我试图写一份报告,显示每个月订单延迟的次数,并显示我们按时完成的百分比。到目前为止,我已经做到了:

SELECT
    COUNT(*) AS NoOfWo, 
    CASE WHEN DATEDIFF(d, CompletionDate, LastActualCompDate) <= 0 THEN 'OnTime' ELSE 'Late' END AS Performance, 
    DATENAME(mm, LastActualCompDate) AS month
FROM         WipHeader
WHERE     (LastActualCompDate >= CAST(DATEPART(year, GETDATE()) AS varchar) + '-01-01')
GROUP BY
    CASE WHEN DATEDIFF(d, CompletionDate, LastActualCompDate) <= 0 THEN 'OnTime' ELSE 'Late' END, MONTH(LastActualCompDate), DATENAME(mm, LastActualCompDate)
ORDER BY
    MONTH(LastActualCompDate)
选择
将(*)算作NoOfWo,
DATEDIFF(d,CompletionDate,LastActualCompDate)=强制转换(DATEPART(year,GETDATE())为varchar)+'-01-01'时的情况
分组

案例DATEDIFF(d,CompletionDate,LastActualCompDate)最简单的方法是将此计数与OVER相加,得出Late+OnTime的总数,然后在SSR中计算百分比

SELECT
    COUNT(*) OVER () AS Total,
    COUNT(*) AS NoOfWo, 
    CASE WHEN DATEDIFF ... blah
或者,如果您想在SQL中使用它(可能需要一些嵌套,未经测试)


最简单的方法是将此计数与OVER相加,得出Late+OnTime的总数,然后在SSR中计算百分比

SELECT
    COUNT(*) OVER () AS Total,
    COUNT(*) AS NoOfWo, 
    CASE WHEN DATEDIFF ... blah
或者,如果您想在SQL中使用它(可能需要一些嵌套,未经测试)


谢谢,gbn,但都没用。也许是因为我是个菜鸟,不知道怎么把它贴进去。SQL选项没有,但数据不正确,它返回的百分比超过100%,这是不可能的。 我是这样修好的。查询现在看起来像:

SELECT     COUNT(*) AS NoOfWo, DATENAME(mm, LastActualCompDate) AS month, LastActualCompDate, CompletionDate, JobNo
FROM         WipHeader
WHERE     (LastActualCompDate >= CAST(DATEPART(year, GETDATE()) AS varchar) + '-01-01') AND (NOT (LastActualCompDate IS NULL))
GROUP BY MONTH(LastActualCompDate), DATENAME(mm, LastActualCompDate), LastActualCompDate, CompletionDate, JobNo
HAVING      (NOT (LastActualCompDate IS NULL)) AND (NOT (LastActualCompDate IS NULL)) AND (NOT (MONTH(LastActualCompDate) IS NULL))
ORDER BY MONTH(LastActualCompDate)
然后在SSRS中,我向数据集中添加了一个新的计算字段,名为CalcDateDiff,使用以下表达式:

=datediff("d",Fields!CompletionDate.Value,Fields!LastActualCompDate.Value)
然后,我在表中添加了名为“Late”、“On Time”和“%On Time”的新列,并分别在下面添加了表达式:

=count(iif (fields!CalcDateDiff.Value>0,1,nothing))
=count(iif (fields!CalcDateDiff.Value<=0,1,nothing))
=count(iif (fields!CalcDateDiff.Value<=0,1,nothing))/Sum(Fields!NoOfWo.Value)
=计数(iif(字段!CalcDateDiff.Value>0,1,无))

=count(iif(fields!CalcDateDiff.Value谢谢gbn,但两者都不起作用。可能是因为我是个新手,不知道如何粘贴。SQL选项有,但数据不好,它返回的百分比超过100%,这是不可能的。 我这样修复了它。查询现在如下所示:

SELECT     COUNT(*) AS NoOfWo, DATENAME(mm, LastActualCompDate) AS month, LastActualCompDate, CompletionDate, JobNo
FROM         WipHeader
WHERE     (LastActualCompDate >= CAST(DATEPART(year, GETDATE()) AS varchar) + '-01-01') AND (NOT (LastActualCompDate IS NULL))
GROUP BY MONTH(LastActualCompDate), DATENAME(mm, LastActualCompDate), LastActualCompDate, CompletionDate, JobNo
HAVING      (NOT (LastActualCompDate IS NULL)) AND (NOT (LastActualCompDate IS NULL)) AND (NOT (MONTH(LastActualCompDate) IS NULL))
ORDER BY MONTH(LastActualCompDate)
然后在SSRS中,我向数据集中添加了一个新的计算字段,名为CalcDateDiff,使用以下表达式:

=datediff("d",Fields!CompletionDate.Value,Fields!LastActualCompDate.Value)
然后,我在表中添加了名为“Late”、“On Time”和“%On Time”的新列,并分别在下面添加了表达式:

=count(iif (fields!CalcDateDiff.Value>0,1,nothing))
=count(iif (fields!CalcDateDiff.Value<=0,1,nothing))
=count(iif (fields!CalcDateDiff.Value<=0,1,nothing))/Sum(Fields!NoOfWo.Value)
=计数(iif(字段!CalcDateDiff.Value>0,1,无))
=计数(iif)(字段!CalcDateDiff.Value