2014-01-08 3 views
0
나는 그림처럼 돌아 조회 할

와 선택에 계산, 그것은 거의 내가 : 내가 반환하지만 단지 기본 내 저장된 프로 시저를 Database resultSQL이 : 비율

필요에 대해 설명 :

CREATE PROCEDURE [dbo].[p_TargetStatus] 
AS 
BEGIN 
     --NOT SURE IF NEEDED 
    Declare @OnTime float 
    Declare @Overdue float 
    Declare @AllON float 
    Declare @AllOV float 
    Declare @AnswON float 
    Declare @AnswOV float 
     --END NOT SURE IF NEEDED 

    SET NOCOUNT ON; 
    IF OBJECT_ID('#tmp1') IS NOT NULL 
    DROP TABLE #tmp1 


    CREATE TABLE #tmp1 
    (
     AUD_ID BIGINT, 
     RowCounter BIGINT, 
     DistinctCounter BIGINT, 
     NACounter BIGINT, 
     Total BIGINT, 
     [Status] VARCHAR(MAX) 
    ) 

    INSERT INTO #tmp1 EXEC [p_GetCompleteIncompleteNaOverviewSCORE] 
    --NOT SURE IF NEEDED 
    Set @OnTime = (Select Count([Status]) 
    From #tmp1 
    Where [Status] = 'OPEN') 

    Set @AllON = (SELECT COUNT([Status]) 
    From #tmp1) 

    SET @AnswON = @OnTime/@AnswON 

    Set @Overdue = (Select Count([Status]) 
    From #tmp1 
    Where [Status] = 'CLOSED') 

    Set @AllOV = (SELECT COUNT([Status]) 
    From #tmp1) 

    SET @AnswOV = @Overdue/@AllOV 
     --END NOT SURE IF NEEDED 

    SELECT COUNT(*) AS [Count],[Target Status] AS TargetStatus 
    FROM (
    SELECT CASE WHEN CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,t2.AUD_TargetDate), 101)) < CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,GETDATE()), 101)) 
      THEN 'Over Due' 
      ELSE 'On Time' END AS [Target Status] 
      FROM #tmp1 t1 INNER JOIN dbo.Audit t2 
      ON t1.AUD_ID = t2.AUD_ID 
      WHERE t1.[Status] = 'Open') DER 
    GROUP BY [Target Status] 

END 
GO 

나는 시도했지만 조금 실패했습니다. 알아낼 수있는 연결성이지만 그 비율은 나에게 이상한 것 같습니다. 이 같은

+0

그림이 보이지 않습니다. 그것을 업로드하십시오 ... – sk7730

+0

좋아, 내가 다시로드했습니다. – inzefinite

답변

0

당신은, 경우에 한하고, 다른 라인

내가 거의 같은 방식으로했다

에 대한 하나가 필요합니다 이런 식으로 전체 예에게있어 여기

create table #events (reqdate int, Opened tinyint) 

insert into #events values (5,1) 
insert into #events values (6,0) 
insert into #events values (3,1) 
insert into #events values (2,0) 
insert into #events values (5,1) 

select 'Closed : ' + RTRIM(SUM(case when Opened = 0 then 1 else 0 end)) + ' out of ' + rtrim(count(*)), 
cast(SUM(case when Opened = 0 then 1 else 0 end) as float)/COUNT(*) 
from #events 
union 
select 'Open : ' + RTRIM(SUM(case when Opened = 1 then 1 else 0 end)) + ' out of ' + rtrim(count(*)), 
cast(SUM(case when Opened = 1 then 1 else 0 end) as float)/COUNT(*) 
from #events 

drop table #events 

이다 노동 조합이없는 아래에서 방법의 사본

,
create table #events (reqdate int, Opened tinyint) 

insert into #events values (5,1) 
insert into #events values (6,0) 
insert into #events values (3,1) 
insert into #events values (2,0) 
insert into #events values (5,1) 

select 'Closed : ' + RTRIM(SUM(case when Opened = blabla then 1 else 0 end)) + ' out of ' + rtrim(count(*)), 
cast(SUM(case when Opened = blabla then 1 else 0 end) as float)/COUNT(*) 
from #events 
cross join (select distinct opened as blabla from #events) p 
group by blabla 

drop table #events 
0

사용 무언가 : 내가 나를 위해 오픈 표현 원인에 의해 interrested 해요

select sum 
     (case 
     when -- open expression 
     then 1 
     else 0 
     end 
     ) 
    /count(*) 
     percentage_open 
from table 
group 
by status