Объединить 2 строки в один столбец - PullRequest
0 голосов
/ 22 июля 2011

Эй, мой запрос сейчас

ALTER PROCEDURE [SSRS].[VolumeCustomers]
@UserID int
AS  

select 
    CaseTypeName,
    COUNT(CaseNo) as CaseCount,
    'Open' as indicator

FROM ORDERS.ApCase AC with (NOLOCK)
    join ORDERS.CaseType CT (NOLOCK) on CT.CaseTypeID = AC.CaseTypeID
    join WORKFLOW.WorkflowHistory WH (NOLOCK) on WH.EntityID = AC.CaseID and TableID = dbo.GetTableID('ApCase', 'ORDERS') and WH.Active = 1
    inner join WORKFLOW.WorkflowStep WS (NOLOCK) on WS.WorkflowStepID = WH.WorkflowStepID and WS.NextStepID is null
where (AC.Active =1 and AC.CreatedDate >= DATEADD(day,-7,getdate()) and AC.CreatedDate < GETDATE()) 
Group By CaseTypeName

union
select 
    CaseTypeName,
    COUNT(Caseno) as CaseCount,
    'Closed' as indicator

FROM ORDERS.ApCase AC with (NOLOCK)
    join ORDERS.CaseType CT (NOLOCK) on CT.CaseTypeID = AC.CaseTypeID
    join WORKFLOW.WorkflowHistory WH (NOLOCK) on WH.EntityID = AC.CaseID and TableID = dbo.GetTableID('ApCase', 'ORDERS') and WH.Active = 1
    join WORKFLOW.WorkflowStep WS (NOLOCK) on WS.WorkflowStepID = WH.WorkflowStepID and WS.NextStepID is not null
where (AC.Active =1 and AC.CreatedDate >= DATEADD(day,-7,getdate()) and AC.CreatedDate < GETDATE())  
GROUP BY CaseTypeName 
Order by CaseCount desc

и выход -

Cytogenetics    2   All
Cytogenetics    1   Open
Flow Tech   1   All
Flow Tech   1   Open
Surgical    1   All
Surgical             1  Open

Но я хочу, чтобы цитогенетика, технология течения и хирургическое вмешательство появлялись в одном ряду Пример:

Cytogenetics    2   All 1   Open
Flow Tech            1        All      1    Open
Surgical             1  All      1        Open

Как мне отредактировать мой запрос, чтобы отразить это?

Ответы [ 2 ]

1 голос
/ 22 июля 2011

Это работает?

SELECT A.*, B.CaseCount, B.indicator
  FROM (<First Part of Union in Question>) AS A INNER JOIN
       (<Second Part of Union in Question>) AS B ON A.CaseTypeName = B.CaseTypeName
0 голосов
/ 22 июля 2011
SELECT
    CaseTypeName,
    COUNT(CASE WHEN WS.NextStepID IS NULL     THEN Caseno END) AS CaseCountOpen,
    COUNT(CASE WHEN WS.NextStepID IS NOT NULL THEN Caseno END) AS CaseCountClosed,
    COUNT(CaseNo) AS CaseCountAll

FROM ORDERS.ApCase AC with (NOLOCK)
    JOIN ORDERS.CaseType CT (NOLOCK)
        ON  CT.CaseTypeID = AC.CaseTypeID
    JOIN WORKFLOW.WorkflowHistory WH (NOLOCK)
        ON  WH.EntityID = AC.CaseID
        AND TableID = dbo.GetTableID('ApCase', 'ORDERS')
        AND WH.Active = 1
    JOIN WORKFLOW.WorkflowStep WS (NOLOCK)
        ON  WS.WorkflowStepID = WH.WorkflowStepID
WHERE AC.Active = 1
  AND AC.CreatedDate >= DATEADD(day,-7,getdate())
  AND AC.CreatedDate < GETDATE()  
GROUP BY CaseTypeName 
ORDER BY CaseCountAll DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...