如果匹配查询中的大小写条件,则将列值除

时间:2017-08-03 06:03:47

标签: php mysql case

我正在尝试将手风琴数量计算为年度或月度状态。

这里是Y = Yearly,M = Monthly。

period_stats

我想根据Yperiod_stats时的金额查询金额,然后将金额除以12,如果Mcase则需要获得直接金额而不分割。

  

我不是sql的专家,所以经过一番搜索我发现我能做到   它在sql中使用select period_stats, CASE period_stats WHEN 'Y' THEN (amount / 12) as amount_monthly ELSE amount END as 'amount_monthly' FROM tbale where id = 1; ,但我没有得到如何使用它。

我试过这种方式。如果我错误地使用它,请纠正我。

SELECT 
period_stats, 
ROUND(CASE WHEN (period_stats = 'Y') THEN (amount / 12) ELSE amount END, 2) 
AS 'amount_monthly'
FROM table 
WHERE id = 1;

如果有人知道任何其他技术,那么我将不胜感激,我也想知道。

结论:

更正查询以获得所需结果。 (通过使用Sebastian Brosch的答案)

amount_monthly
1005

结果:

    static void Main(string[] args)
    {
        var subscriptionClient = new SubscriptionClient(
            nsConnString,
            topicName,
            subsName,
            ReceiveMode.ReceiveAndDelete);

        subscriptionClient.AddRuleAsync(new RuleDescription
        {
            Filter = new CorrelationFilter { Label = Guid.NewGuid().ToString() },
            Name = Guid.NewGuid().ToString()
        }).Wait();

        Console.WriteLine("Success");
        Console.ReadKey();

    }

3 个答案:

答案 0 :(得分:3)

你很亲密。您可以使用以下解决方案:

SELECT 
    period_stats, 
    CASE WHEN (period_stats = 'Y') THEN (amount / 12) ELSE amount END AS 'amount_monthly'
FROM table 
WHERE id = 1;
  

演示: http://sqlfiddle.com/#!9/1521ad/2/0

上面的查询使用以下语法:

CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
  

来源: https://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html#operator_case

要仅显示两位小数,您可以使用TRUNCATE(不舍入)或ROUND(使用舍入)。

使用TRUNCATE的解决方案:

SELECT 
    period_stats, 
    TRUNCATE(CASE WHEN (period_stats = 'Y') THEN (amount / 12) ELSE amount END, 2) AS 'amount_monthly'
FROM table 
WHERE id = 1;

使用ROUND的解决方案:

SELECT 
    period_stats, 
    ROUND(CASE WHEN (period_stats = 'Y') THEN (amount / 12) ELSE amount END, 2) AS 'amount_monthly'
FROM table 
WHERE id = 1;

答案 1 :(得分:3)

你可以尝试一下。

        select period_stats , 
        IF(`period_stats`='Y',`Amount`/12 , `Amount`) AS amount_monthly
        FROM table where id = 1;

答案 2 :(得分:2)

您可以这样编写查询:

SELECT period_stats, 
    CASE period_stats 
    WHEN "Y" THEN Amount/12 
    ELSE Amount 
    END AS 'amount_monthly' 
FROM tbale where id = 1;