我有一个表格,其中一个列是"金额"。然后我想从中减去一个特定的数字并用CASE THEN创建另一个列。我可以使用if elseif成功地在while循环中使用php,但客户端希望能够对结果进行排序。我对查询不是很好,而是想学习。这是我通过查看这里的所有问题得出的。这有用吗?
while NumGiven<7 and NumGiven>8:
NumGiven=(input('Please enter a 7 or 8 digit number:')
答案 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