sql CASE THEN语句

时间:2016-01-31 18:07:48

标签: sql mysqli

我有一个表格,其中一个列是"金额"。然后我想从中减去一个特定的数字并用CASE THEN创建另一个列。我可以使用if elseif成功地在while循环中使用php,但客户端希望能够对结果进行排序。我对查询不是很好,而是想学习。这是我通过查看这里的所有问题得出的。这有用吗?

while NumGiven<7 and NumGiven>8:
    NumGiven=(input('Please enter a 7 or 8 digit number:')

2 个答案:

答案 0 :(得分:1)

您无法在定义它的_head中引用列别名。你有一个非常简单的表达方式,所以重复一遍:

_head = ...

在SQL的所有方言中都是如此。原因很简单:SQL没有在SELECT语句中指定表达式的评估顺序。因此,可以在定义别名之前评估使用别名的表达式。

答案 1 :(得分:1)

灵活性怎么样?想象一下,你需要改变/扩展/等。你的利润...... 我建议将它们放在一个单独的表中:

create table margins(m_from int, m_to int);

insert into margins values
(0, 2501),(2501, 5001),(5001, 10001),(10001,15001),(15001,20001);

现在您的代码如下所示,当您的边距发生变化时,您不必更改它:

select v.*, m.m_to - totalSales as needed  from (
SELECT 
  accountNumber, accountName, sectorID, territoryID, regionID, SUM(amount) AS totalSales
FROM tblsales 
GROUP BY accountName) as v
join margins m
on (totalSales >= m_from and totalSales < m_to) 
ORDER BY accountName;

这是您的位修改sqlfiddle