我想从MySQL存储过程中的SELECT子句有条件地隐藏列。查询是
SELECT year,gwp_amount,claim_amount,cancellation_amount from tmptable;
我想有条件地显示gwp_amount,claim_amount,cancellation_amount
列,
有时我想要显示gwp_amount and claim_amount
列,
有时候gwp_amount and cancellation_amount
列,
有时one of the column
和
有时all three columns
。
我在商店程序中传递了三个指标,如gwp_ind,calim_ind,cancellation_ind。
我想根据这些参数显示这些列。
答案 0 :(得分:1)
我认为你正在寻找Control Flow Functions。
SELECT year, (IF gwp_amount < 2, NULL, gwp_amount) FROM tmptable;
如果要使投影有条件,则必须通过动态创建SQL查询在应用程序中执行此操作。 I. e。你必须为每个案例说出单独的查询。单独使用SQL是不可能的。你可以做的最接近的事情就是在查询列表中列出一个非条件的查询。 E.g:
SELECT (IF gwp_amount < 2, gwp_amount, claim_amount) FROM tmptable;
这会在gwp_amount
或claim_amount
上进行投射。但是,不可能制作项目gwp_amount
或gwp_amount
和claim_amount
。
答案 1 :(得分:0)
你可以使用CASE语句.... SELECT year,(gwp_ind =时的情况 真如此gwp_amount,当calim_ind = True那么claim_amount,何时 cancellation_ind = True THEN cancellation_amount ELSE 0 END)作为金额 来自tmptable;
您可以使用以上查询如果您有根据您的要求。 但根据问题,我们无法选择动态列 选择条款。