Sql Server Pivot with multiple columns from a record

后端 未结 1 695
情歌与酒
情歌与酒 2021-01-21 11:21

I am using Sql Server 2014. I currently have a table which looks something like this:

labNumber   parameter   result  date
18897       Nitrate     <0      1/         


        
相关标签:
1条回答
  • 2021-01-21 12:09

    Considering you have just record per parameter, Here is one way using conditional aggregate

    SELECT labNumber,
           Max(CASE WHEN parameter = 'Nitrate' THEN result END) AS nitate,
           Max(CASE WHEN parameter = 'Nitrate' THEN date END) nitateDate,
           Max(CASE WHEN parameter = 'Coliform' THEN result END) Coliform,
           Max(CASE WHEN parameter = 'Coliform' THEN date END) ColiformDate,
           Max(CASE WHEN parameter = 'Arsenic' THEN result END) Arsenic,
           Max(CASE WHEN parameter = 'Arsenic' THEN date END) ArsenicDate
    FROM   yourtable
    GROUP  BY labNumber 
    

    Another approach by unpivoting and pivoting the data

    SELECT labNumber,
           Nitrate,
           NitrateDate,
           Coliform,
           ColiformDate,
           Arsenic,
           ArsenicDate
    FROM  (SELECT labNumber,
                  intr,
                  col
           FROM   Yourtable
                  CROSS apply (VALUES (result,parameter),
                                      (convert(varchar(20),[date],120),parameter + 'Date')) cs(intr, col))a
          PIVOT (Max(intr)
                FOR col IN (Nitrate,
                            NitrateDate,
                            Coliform,
                            ColiformDate,
                            Arsenic,
                            ArsenicDate))pv 
    
    0 讨论(0)
提交回复
热议问题