Hi Everyone,
I am getting duplicates when pulling a customers weight and height
I am getting 2 weight values for a user code
ex; pounds AND pounds & ounces
I am trying to pull the latest weight and height number from MOD date
SELECT DISTINCT PB.CUSTOMER_CODE,
CASE
WHEN DD.UNIT_OF_MEASURE_NAME ='Inches' OR
DD.UNIT_OF_MEASURE_NAME ='Feet & Inches' OR
DD.UNIT_OF_MEASURE_NAME ='Centimeters' THEN MAX(PD.DD_MOD_DATE)
WHEN DD.UNIT_OF_MEASURE_NAME ='Pounds' OR
DD.UNIT_OF_MEASURE_NAME ='Ounces' OR
DD.UNIT_OF_MEASURE_NAME ='Kilograms' OR
DD.UNIT_OF_MEASURE_NAME ='Pounds & Ounces' THEN MAX(PD.DD_MOD_DATE)
END AS UPDATED,
CASE WHEN DD.UNIT_OF_MEASURE_NAME = 'Feet & Inches' THEN CAST(CONVERT(DECIMAL(10,2),PD.DISCRETE_DATA_VALUE)AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Inches' THEN CAST(FLOOR(PD.DISCRETE_DATA_VALUE / 12) AS VARCHAR)+'.' + CAST(FLOOR(CAST(ROUND(PD.DISCRETE_DATA_VALUE %12,0)AS VARCHAR))AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Centimeters' THEN CAST(CAST(PD.DISCRETE_DATA_VALUE / 2.54 AS DECIMAL(10,2))/12 AS DECIMAL(10,2))
WHEN DD.UNIT_OF_MEASURE_NAME = 'Inches' THEN CAST(CONVERT(DECIMAL(10,2),PD.DISCRETE_DATA_VALUE)AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Pounds' THEN CAST(CONVERT(DECIMAL(10,2),PD.DISCRETE_DATA_VALUE)AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Ounces' THEN CAST(CAST(PD.DISCRETE_DATA_VALUE/16 AS DECIMAL(10,2))AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Kilograms' THEN CAST(CAST(PD.DISCRETE_DATA_VALUE * 2.2 AS DECIMAL(10,2))AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Pounds & Ounces' THEN CAST(CONVERT(DECIMAL(10,2),PD.DISCRETE_DATA_VALUE)AS VARCHAR)
END AS FINAL
, DD.UNIT_OF_MEASURE_NAME
If there is a way I could tie the CUSTOMER_CODE to my first case statement
or if I could just select the MAX(PD.DD_MOD_DATE) out of the group and not the max of each..
I think this could resolve the problem
I don't know if this could help me with some clues been stuck on this for awhile
QUERY is below
SELECT DISTINCT PB.CUSTOMER_CODE, MAX(CONVERT(VARCHAR, PD.DD_MOD_DATE, 101)) AS MAXDATES, --, PD.DISCRETE_DATA_VALUE
CASE WHEN DD.UNIT_OF_MEASURE_NAME = 'Feet & Inches' THEN CAST(CONVERT(DECIMAL(10,2),PD.DISCRETE_DATA_VALUE)AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Inches' THEN CAST(FLOOR(PD.DISCRETE_DATA_VALUE / 12) AS VARCHAR)+'.' + CAST(FLOOR(CAST(ROUND(PD.DISCRETE_DATA_VALUE %12,0)AS VARCHAR))AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Centimeters' THEN CAST(CAST(PD.DISCRETE_DATA_VALUE / 2.54 AS DECIMAL(10,2))/12 AS DECIMAL(10,2))
WHEN DD.UNIT_OF_MEASURE_NAME = 'Inches' THEN CAST(CONVERT(DECIMAL(10,2),PD.DISCRETE_DATA_VALUE)AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Pounds' THEN CAST(CONVERT(DECIMAL(10,2),PD.DISCRETE_DATA_VALUE)AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Ounces' THEN CAST(CAST(PD.DISCRETE_DATA_VALUE/16 AS DECIMAL(10,2))AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Kilograms' THEN CAST(CAST(PD.DISCRETE_DATA_VALUE * 2.2 AS DECIMAL(10,2))AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Pounds & Ounces' THEN CAST(CONVERT(DECIMAL(10,2),PD.DISCRETE_DATA_VALUE)AS VARCHAR)
END AS FINAL,
DD.UNIT_OF_MEASURE_NAME
FROM PT_BASIC AS PB INNER JOIN
PT_STATUS AS PS ON PB.CUSTOMER_ID = PS.CUSTOMER_ID INNER JOIN
PT_ADMISSION AS PA ON PS.ADMISSION_ID = PA.ADMISSION_ID INNER JOIN
PTC_DISCRETE_DATA_HEADER AS PH ON PB.CUSTOMER_ID = PH.CUSTOMER_ID INNER JOIN
PTC_DISCRETE_CLINICAL_DATA AS PCD ON PH.DISCRETE_DATA_HEADER_ID = PCD.DISCRETE_DATA_HEADER_ID INNER JOIN
PTC_DISCRETE_DATA AS PD ON PCD.DISCRETE_CLINICAL_DATA_ID = PD.DISCRETE_CLINICAL_DATA_ID INNER JOIN
DD_UNIT_OF_MEASURE AS DD ON PD.UNIT_OF_MEASURE_ID = DD.UNIT_OF_MEASURE_ID
WHERE
(PA.TERMINATION_DATE IS NULL) AND (PCD.CLINICAL_DATA_ID = 5 OR PCD.CLINICAL_DATA_ID = 6)
AND (PS.STATUS_END_DATE > '2015-10-07')
GROUP BY
PB.CUSTOMER_CODE,
PD.DD_MOD_DATE,
PD.DISCRETE_DATA_VALUE,
DD.UNIT_OF_MEASURE_NAME
Solved for anyone trying to accomplish what I just did
SELECT -- ,
PB.CUSTOMER_CODE, PD.DD_MOD_DATE,
CASE WHEN DD.UNIT_OF_MEASURE_NAME = 'Feet & Inches' THEN CAST(CONVERT(DECIMAL(10,2),PD.DISCRETE_DATA_VALUE)AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Inches' THEN CAST(FLOOR(PD.DISCRETE_DATA_VALUE / 12) AS VARCHAR)+'.' + CAST(FLOOR(CAST(ROUND(PD.DISCRETE_DATA_VALUE %12,0)AS VARCHAR))AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Centimeters' THEN CAST(CAST(PD.DISCRETE_DATA_VALUE / 2.54 AS DECIMAL(10,2))/12 AS DECIMAL(10,2))
WHEN DD.UNIT_OF_MEASURE_NAME = 'Inches' THEN CAST(CONVERT(DECIMAL(10,2),PD.DISCRETE_DATA_VALUE)AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Pounds' THEN CAST(CONVERT(DECIMAL(10,2),PD.DISCRETE_DATA_VALUE)AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Ounces' THEN CAST(CAST(PD.DISCRETE_DATA_VALUE/16 AS DECIMAL(10,2))AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Kilograms' THEN CAST(CAST(PD.DISCRETE_DATA_VALUE * 2.2 AS DECIMAL(10,2))AS VARCHAR)
WHEN DD.UNIT_OF_MEASURE_NAME = 'Pounds & Ounces' THEN CAST(CONVERT(DECIMAL(10,2),PD.DISCRETE_DATA_VALUE)AS VARCHAR)
END AS FINAL,
DD.UNIT_OF_MEASURE_NAME
FROM PT_BASIC AS PB LEFT JOIN
PT_STATUS AS PS ON PB.CUSTOMER_ID = PS.CUSTOMER_ID INNER JOIN
PT_ADMISSION AS PA ON PS.ADMISSION_ID = PA.ADMISSION_ID INNER JOIN
PTC_DISCRETE_DATA_HEADER AS PH ON PB.PATIENT_ID = PH.PATIENT_ID INNER JOIN
PTC_DISCRETE_CLINICAL_DATA AS PCD ON PH.DISCRETE_DATA_HEADER_ID = PCD.DISCRETE_DATA_HEADER_ID RIGHT JOIN
PTC_DISCRETE_DATA AS PD ON PCD.DISCRETE_CLINICAL_DATA_ID = PD.DISCRETE_CLINICAL_DATA_ID INNER JOIN
DD_UNIT_OF_MEASURE AS DD ON PD.UNIT_OF_MEASURE_ID = DD.UNIT_OF_MEASURE_ID
INNER JOIN
(
SELECT MAX(PD.DD_MOD_DATE) AS LATESTDATE, PB.CUSTOMER_CODE
FROM
PT_BASIC AS PB LEFT JOIN
PT_STATUS AS PS ON PB.CUSTOMER_ID = PS.CUSTOMER_ID INNER JOIN
PT_ADMISSION AS PA ON PS.ADMISSION_ID = PA.ADMISSION_ID INNER JOIN
PTC_DISCRETE_DATA_HEADER AS PH ON PB.PATIENT_ID = PH.PATIENT_ID INNER JOIN
PTC_DISCRETE_CLINICAL_DATA AS PCD ON PH.DISCRETE_DATA_HEADER_ID = PCD.DISCRETE_DATA_HEADER_ID RIGHT JOIN
PTC_DISCRETE_DATA AS PD ON PCD.DISCRETE_CLINICAL_DATA_ID = PD.DISCRETE_CLINICAL_DATA_ID INNER JOIN
DD_UNIT_OF_MEASURE AS DD ON PD.UNIT_OF_MEASURE_ID = DD.UNIT_OF_MEASURE_ID
GROUP BY
PB.CUSTOMER_CODE
)SubMax
ON PD.DD_MOD_DATE = SubMax.LATESTDATE
AND PB.CUSTOMER_CODE = SubMax.PATIENT_CODE
WHERE
(PA.TERMINATION_DATE IS NULL) AND (PCD.CLINICAL_DATA_ID = 5 OR PCD.CLINICAL_DATA_ID = 6)
AND (PS.STATUS_END_DATE > '2015-10-07')
GROUP BY
PB.CUSTOMER_CODE,
DD.UNIT_OF_MEASURE_NAME,
PD.DISCRETE_DATA_VALUE,
PD.DD_MOD_DATE
hopefully this problem pops up again so I could help