从选择案例中选择值

时间:2019-10-30 06:47:30

标签: mysql case

以下代码可在MySQL中使用。但是,我想知道如果我有更多的组可供选择,还是我可以节省运行该程序的时间。因为它是第一次选择我想要的组,然后第二次更改值以创建一列。谢谢。

Groups:
Group_1:('F01', 'D01')
Group_2:('F01', 'B01')
Group_3: ('B01', 'D01')
SELECT O.OrderNumber, CONVERT(date,O.OrderDate) AS Date,
       P.ProductName, I.Quantity, I.UnitPrice, 
       CASE WHEN P.ProductSection_ID = 'F01' THEN 'Frozen food section' 
            WHEN P.ProductSection_ID = 'B01' THEN 'Body and beauty section' 
            WHEN P.ProductSection_ID = 'D01' THEN 'Deli section'
            END AS `ProductSection`
  FROM Order AS O
  JOIN OrderItem AS I ON O.Id = I.OrderId
  JOIN Product AS P ON P.Id = I.ProductIdAND
  WHERE
   If('GROUP_1' = ?group, P.ProductSection_ID in ('F01', 'D01'), P.ProductSection_ID in ('F01', 'B01'))
ORDER BY O.OrderNumber

我使用Tibco从SQL提取数据。可以在该软件上运行MySQL代码,?group将被视为选择我想要的数据的属性(group1,group2或group3)。如果我将?group替换为下面的GROUP_2,它将选择group2。 If('GROUP_1' = ?group, P.ProductSection_ID in ('F01', 'D01'), P.ProductSection_ID in ('F01', 'B01'))

如果我在下面使用GROUP_1替换?group,它将选择group1。
If('GROUP_1' = ?group, P.ProductSection_ID in ('F01', 'D01'), P.ProductSection_ID in ('F01', 'B01'))

但是,如果我有三个以上的组,则使用“ IF”是一种不好的方法。因此,我想知道是否有更好的方法。谢谢。

0 个答案:

没有答案