有条件地隐藏SELECT子句中的列

时间:2014-01-13 04:50:40

标签: mysql

我想从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。

我想根据这些参数显示这些列。

2 个答案:

答案 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_amountclaim_amount上进行投射。但是,不可能制作项目gwp_amountgwp_amountclaim_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;

     

您可以使用以上查询如果您有根据您的要求。   但根据问题,我们无法选择动态列   选择条款。