I am using Sql Server 2014. I currently have a table which looks something like this:
labNumber parameter result date
18897 Nitrate <0 1/
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