Reputation: 19327
I want to make a case
statement like in this query :
@Query(nativeQuery = true, value = "select CASE " +
" WHEN TYP_0=1 THEN ACC_0" +
" WHEN TYP_0=2 THEN ACC_3" +
" WHEN TYP_0=3 THEN ACC_2" +
" END FROM tomx3v6.TOMCTB.GACCCODE WHERE ACCCOD_0 IN (SELECT [ACCCOD_0] FROM [tomx3v6].[TOMCTB].[ITMMASTER] WHERE YITMOXA_0=?1) AND COA_0='PCG'")
public String getPCGvalue(String linpurtyp, String code);
But instead of basing the case on the database column TYP_0
I want to make the case
statement to be based on the method parameter linpurtyp
. How to do that ?
Upvotes: 0
Views: 396
Reputation: 220952
Try this:
@Query(nativeQuery = true, value = "select CASE " +
" WHEN ?1=1 THEN ACC_0" +
" WHEN ?1=2 THEN ACC_3" +
" WHEN ?1=3 THEN ACC_2" +
" END FROM tomx3v6.TOMCTB.GACCCODE WHERE ACCCOD_0 IN (SELECT [ACCCOD_0] FROM [tomx3v6].[TOMCTB].[ITMMASTER] WHERE YITMOXA_0=?1) AND COA_0='PCG'")
public String getPCGvalue(String linpurtyp, String code);
Alternatively, use named parameters
@Query(nativeQuery = true, value = "select CASE " +
" WHEN :linpurtyp=1 THEN ACC_0" +
" WHEN :linpurtyp=2 THEN ACC_3" +
" WHEN :linpurtyp=3 THEN ACC_2" +
" END FROM tomx3v6.TOMCTB.GACCCODE WHERE ACCCOD_0 IN (SELECT [ACCCOD_0] FROM [tomx3v6].[TOMCTB].[ITMMASTER] WHERE YITMOXA_0=:linpurtyp) AND COA_0='PCG'")
public String getPCGvalue(@Param("linpurtyp") String linpurtyp, @Param("code") String code);
Upvotes: 1