Sunday, February 12, 2012

Concatenation tweaking

I'm trying to create an exception report that compares the 4 amt fields
between 2 tables and then list the column(s) where the amts don't match. I
hard coded the comma from case 2 thru 4 and the resulting text starts with a
comma when PROJ_V_FEE_AMT amts matched. Can someone help me tweak the code?
Thanks.
SELECT PROJ,
PROJ_NAME,
...,
EXCEPTIONS =
CASE
WHEN (p.PROJ_V_FEE_AMT <> PROJ_V_FEE_AMT_PM_SUM) THEN 'PROJ_V_FEE_AMT'
ELSE ''
END
+
CASE
WHEN (p.PROJ_V_CST_AMT <> PROJ_V_CST_AMT_PM_SUM) THEN ', PROJ_V_CST_AMT'
ELSE ''
END
+
CASE
WHEN (p.PROJ_F_FEE_AMT <> PROJ_F_FEE_AMT_PM_SUM) THEN ', PROJ_F_FEE_AMT'
ELSE ''
END
+
CASE
WHEN (p.PROJ_F_CST_AMT <> PROJ_F_CST_AMT_PM_SUM) THEN ', PROJ_F_CST_AMT'
ELSE ''
ENDTry this too:
EXCEPTIONS =
Case When PROJ_V_FEE_AMT_PM_SUM <> Any
(Select p.PROJ_V_FEE_AMT Union Select p.PROJ_V_CST_AMT Union
Select p.PROJ_F_FEE_AMT Union Select p.PROJ_F_CST_AMT)
Then Reverse(Substring(Reverse(
IsNull(CASE WHEN p.PROJ_V_FEE_AMT <> PROJ_V_FEE_AMT_PM_SUM
THEN 'PROJ_V_FEE_AMT' End + ', ', '') +
IsNull(CASE WHEN p.PROJ_V_CST_AMT <> PROJ_V_CST_AMT_PM_SUM
THEN 'PROJ_V_CST_AMT' End + ', ', '') +
IsNull(CASE WHEN p.PROJ_F_FEE_AMT <> PROJ_F_FEE_AMT_PM_SUM
THEN 'PROJ_F_FEE_AMT' End + ', ', '') +
IsNull(CASE WHEN p.PROJ_F_CST_AMT <> PROJ_F_CST_AMT_PM_SUM
THEN 'PROJ_F_CST_AMT'End + ', ', '')), 3, 100))
Else Null End
"danlin" wrote:

> I'm trying to create an exception report that compares the 4 amt fields
> between 2 tables and then list the column(s) where the amts don't match.
I
> hard coded the comma from case 2 thru 4 and the resulting text starts with
a
> comma when PROJ_V_FEE_AMT amts matched. Can someone help me tweak the cod
e?
> Thanks.
> SELECT PROJ,
> PROJ_NAME,
> ...,
> EXCEPTIONS =
> CASE
> WHEN (p.PROJ_V_FEE_AMT <> PROJ_V_FEE_AMT_PM_SUM) THEN 'PROJ_V_FEE_AMT'
> ELSE ''
> END
> +
> CASE
> WHEN (p.PROJ_V_CST_AMT <> PROJ_V_CST_AMT_PM_SUM) THEN ', PROJ_V_CST_AMT'
> ELSE ''
> END
> +
> CASE
> WHEN (p.PROJ_F_FEE_AMT <> PROJ_F_FEE_AMT_PM_SUM) THEN ', PROJ_F_FEE_AMT'
> ELSE ''
> END
> +
> CASE
> WHEN (p.PROJ_F_CST_AMT <> PROJ_F_CST_AMT_PM_SUM) THEN ', PROJ_F_CST_AMT'
> ELSE ''
> END

No comments:

Post a Comment