0

I'm user of SAP v9.2 (SQL Server 2008). I need to get data of name and result by date and shift in 1 single row, but when I try to use this query :

SELECT              
    A.DATE,         
    SUM((ISNULL(A.HASIL_SHIFT1,0) AS HASIL_SHIFT1,          
    SUM((ISNULL(A.HASIL_SHIFT2,0) AS HASIL_SHIFT2,          
    SUM((ISNULL(A.HASIL_SHIFT3,0) AS HASIL_SHIFT3,          
    A.NAME          
FROM                
    (SELECT         
         A.DATE,        
         CASE WHEN A.SHIFT=1 THEN A.HASIL END AS HASIL_SHIFT1,      
         CASE WHEN A.SHIFT=2 THEN A.HASIL END AS HASIL_SHIFT2,      
         CASE WHEN A.SHIFT=3 THEN A.HASIL END AS HASIL_SHIFT3,      
         A.NAME     
    FROM            
        (SELECT     
             A.DATE,    
             A.SHIFT    
             A.HASIL    
             B.NAME 
         FROM       
             (SELECT DISTINCT
                  DATE AS DATE,
                  SHIFT AS SHIFT,
                  QTY AS HASIL
              FROM  
                  TABLE T1
              WHERE 
                  DATE BETWEEN [%0] AND [%1]) A 
        LEFT JOIN   
            (SELECT DISTINCT
                 POSTING_DATE AS DATE
                 SHIFT AS SHIFT
                 NAMA AS NAME
             FROM   
                 TABLE T2) B ON A.DATE = B.DATE 
                             AND A.SHIFT = B.SHIFT) A) A                

I get result like this :

DATE        HASIL_SHIFT1    HASIL_SHIFT2    HASIL_SHIFT3    NAME
07.01.18    202.34          0.00            0.00            Arip Purnomo
07.01.18    0.00            217.86          0.00            Prayitno C Prayitno C
07.01.18    0.00            0.00            205.22  

it is possible for me to get data with column name format can be same as sum of qty like this :

DATE        HASIL_SHIFT1    HASIL_SHIFT2    HASIL_SHIFT3    NAME_SHIFT1     NAME_SHIFT2             NAME_SHIFT3
07.01.18    202.34          217.86          205.22          Arip Purnomo    Prayitno C Prayitno C   

1 Answer 1

1

Try the following

SELECT      
    A.DATE, 

    ISNULL(SUM(CASE WHEN A.SHIFT=1 THEN A.HASIL END),0) AS HASIL_SHIFT1,       
    ISNULL(SUM(CASE WHEN A.SHIFT=2 THEN A.HASIL END),0) AS HASIL_SHIFT2,       
    ISNULL(SUM(CASE WHEN A.SHIFT=3 THEN A.HASIL END),0) AS HASIL_SHIFT3,       

    MAX(CASE WHEN A.SHIFT=1 THEN B.NAME END) AS NAME_SHIFT1,  
    MAX(CASE WHEN A.SHIFT=2 THEN B.NAME END) AS NAME_SHIFT2,  
    MAX(CASE WHEN A.SHIFT=3 THEN B.NAME END) AS NAME_SHIFT3  

FROM        
    (   
      SELECT  
          DISTINCT
          DATE AS DATE,
          SHIFT AS SHIFT,
          QTY AS HASIL

      FROM    
          TABLE T1

      WHERE   
          DATE BETWEEN [%0] AND [%1]
    ) A 

    LEFT JOIN   

    (   
      SELECT  
          DISTINCT
          POSTING_DATE AS DATE,
          SHIFT AS SHIFT,
          NAMA AS NAME

      FROM    
          TABLE T2
    ) B 

    ON  
    A.DATE=B.DATE   
    AND A.SHIFT=B.SHIFT 

GROUP BY A.DATE
Sign up to request clarification or add additional context in comments.

1 Comment

@IpanUtomo If that solves your problem, then please accept that as the correct answer.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.