Note that there are some explanatory texts on larger screens.

plurals
  1. PONeed a little bit of help in finishing query
    primarykey
    data
    text
    <p>I've got such query</p> <pre><code>SELECT CDV.SetId ,CDV.DateImported ,CDV.ProductName ,sum(CDV.TransferedCapital) as [TransferedCapital] ,sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end) as [WithdrawValue] ,sum(CDV.TransferedCapital)-sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end) as [Left] ,(sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end)/sum(CDV.TransferedCapital)*100) as [Withdraw%] ,sum(CDV.PaymentValue) as [PaymentValue] from CaseDetailsView as CDV join CaseActionHistory as CA on CA.CaseDetailId = CDV.CaseDetailsId join PaymentCaseHistory as PCH on PCH.CaseDetailsId = CDV.CaseDetailsId join PaymentSession as PS on PS.SessionId = PCH.SessionId where (CDV.ClientId = @ClientId or @ClientId IS NULL) and (CA.IsDeleted IS NULL or CA.IsDeleted &lt;&gt; 'True') group by CDV.SetId, CDV.DateImported, CDV.ProductName order by CDV.SetId </code></pre> <p>And I got "small" (read as: huge) problems with finishing it.</p> <p>I need to add such field:</p> <p>datepart(week,PS.SessionDate)</p> <p>Without this one query works simply perfectly.</p> <p>After adding this one I got something like:</p> <pre><code>SELECT CDV.SetId ,CDV.DateImported ,CDV.ProductName ,sum(CDV.TransferedCapital) as [TransferedCapital] ,sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end) as [WithdrawValue] ,sum(CDV.TransferedCapital)-sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end) as [Left] ,(sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end)/sum(CDV.TransferedCapital)*100) as [Withdraw%] ,sum(CDV.PaymentValue) as [PaymentValue] ,datepart(week,PS.SessionDate) as [SessionDate] from CaseDetailsView as CDV join CaseActionHistory as CA on CA.CaseDetailId = CDV.CaseDetailsId join PaymentCaseHistory as PCH on PCH.CaseDetailsId = CDV.CaseDetailsId join PaymentSession as PS on PS.SessionId = PCH.SessionId where (CDV.ClientId = @ClientId or @ClientId IS NULL) and (CA.IsDeleted IS NULL or CA.IsDeleted &lt;&gt; 'True') group by CDV.SetId, CDV.DateImported, CDV.ProductName, datepart(week, PS.SessionDate) order by CDV.SetId </code></pre> <p>However query doesn't show all values. Of course that's because of using "inner join".</p> <p>But when I replaced inner join with left join like below:</p> <pre><code>SELECT CDV.SetId ,CDV.DateImported ,CDV.ProductName ,sum(CDV.TransferedCapital) as [TransferedCapital] ,sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end) as [WithdrawValue] ,sum(CDV.TransferedCapital)-sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end) as [Left] ,(sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end)/sum(CDV.TransferedCapital)*100) as [Withdraw%] ,sum(CDV.PaymentValue) as [PaymentValue] ,datepart(week,PS.SessionDate) as [SessionDate] from CaseDetailsView as CDV join CaseActionHistory as CA on CA.CaseDetailId = CDV.CaseDetailsId left join PaymentCaseHistory as PCH on PCH.CaseDetailsId = CDV.CaseDetailsId left join PaymentSession as PS on PS.SessionId = PCH.SessionId where (CDV.ClientId = @ClientId or @ClientId IS NULL) and (CA.IsDeleted IS NULL or CA.IsDeleted &lt;&gt; 'True') group by CDV.SetId, CDV.DateImported, CDV.ProductName, datepart(week, PS.SessionDate) order by CDV.SetId </code></pre> <p>Values get multiplied.</p> <p>Ideas? </p> <hr> <p>Based on tries, tests etc etc I finished with sth like:</p> <pre><code>SELECT CDV.SetId ,CDV.DateImported ,CDV.ProductName ,COALESCE(sum(CDV.TransferedCapital),0) as [TransferedCapital] ,COALESCE(sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end),0) as [WithdrawValue] ,COALESCE(sum(CDV.TransferedCapital)-sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end),0) as [Left] ,COALESCE((sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end)/sum(CDV.TransferedCapital)*100),0) as [Withdraw%] ,COALESCE(sum(PCH.PaymentValue),0) as [PaymentValue] ,COALESCE(datediff(week,CDV.DateImported, PS.SessionDate),0) as [Week] from CaseActionHistory as CA join CaseDetailsView as CDV on CA.CaseDetailId = CDV.CaseDetailsId join PaymentCaseHistory as PCH on PCH.ActionArchiveId = CA.CaseActionId join PaymentSession as PS on PS.SessionId = PCH.SessionId where (CDV.ClientId = @ClientId or @ClientId IS NULL) and (CA.IsDeleted IS NULL or CA.IsDeleted &lt;&gt; 'True') and (CDV.SetId = @SetId or @SetId IS NULL) group by CDV.SetId, CDV.DateImported, CDV.ProductName, datediff(week,CDV.DateImported, PS.SessionDate) order by CDV.SetId, datediff(week,CDV.DateImported, PS.SessionDate) </code></pre> <p>The query itself works good. I just need one more thing inside of it:</p> <p>A row which shows sum of </p> <pre><code>,COALESCE(sum(CDV.TransferedCapital),0) as [TransferedCapital] ,COALESCE(sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end),0) as [WithdrawValue] ,COALESCE(sum(CDV.TransferedCapital)-sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end),0) as [Left] ,COALESCE((sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end)/sum(CDV.TransferedCapital)*100),0) as [Withdraw%] ,COALESCE(sum(PCH.PaymentValue),0) as [PaymentValue] </code></pre> <p>for whole SetId. I thought about UNION but may it work?</p> <hr> <p>Query with UNION:</p> <pre><code>SELECT CDV.SetId ,CDV.DateImported ,CDV.ProductName ,COALESCE(sum(CDV.TransferedCapital),0) as [TransferedCapital] ,COALESCE(sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end),0) as [WithdrawValue] ,COALESCE(sum(CDV.TransferedCapital)-sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end),0) as [Left] ,COALESCE((sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end)/sum(CDV.TransferedCapital)*100),0) as [Withdraw%] ,COALESCE(sum(PCH.PaymentValue),0) as [PaymentValue] ,COALESCE(datediff(week,CDV.DateImported, PS.SessionDate),0) as [Week] from CaseActionHistory as CA join CaseDetailsView as CDV on CA.CaseDetailId = CDV.CaseDetailsId join PaymentCaseHistory as PCH on PCH.ActionArchiveId = CA.CaseActionId join PaymentSession as PS on PS.SessionId = PCH.SessionId where (CDV.ClientId = @ClientId or @ClientId IS NULL) and (CA.IsDeleted IS NULL or CA.IsDeleted &lt;&gt; 'True') and (CDV.SetId = @SetId or @SetId IS NULL) group by CDV.SetId, CDV.DateImported, CDV.ProductName, datediff(week,CDV.DateImported, PS.SessionDate) UNION ALL SELECT CDV.SetId ,CDV.DateImported ,CDV.ProductName ,COALESCE(sum(CDV.TransferedCapital),0) as [TransferedCapital] ,COALESCE(sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end),0) as [WithdrawValue] ,COALESCE(sum(CDV.TransferedCapital)-sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end),0) as [Left] ,COALESCE((sum(case when CA.CaseActionDefinitionId = 87 then CDV.TransferedCapital else 0 end)/sum(CDV.TransferedCapital)*100),0) as [Withdraw%] ,COALESCE(sum(CDV.PaymentValue),0) as [PaymentValue] ,NULL from CaseActionHistory as CA join CaseDetailsView as CDV on CA.CaseDetailId = CDV.CaseDetailsId where (CDV.ClientId = @ClientId or @ClientId IS NULL) and (CA.IsDeleted IS NULL or CA.IsDeleted &lt;&gt; 'True') and (CDV.SetId = @SetId or @SetId IS NULL) group by CDV.SetId, CDV.DateImported, CDV.ProductName order by CDV.SetId </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload