以下代码可在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”是一种不好的方法。因此,我想知道是否有更好的方法。谢谢。