我在SQL非常新,我使用sqlzoo實踐,並在其AdventureWorks #14我用下面的代碼和它沒有工作當在SQL必須指定源表中的變量在MySQL
SELECT COUNT(SalesOrderID), SUM(SubTotal),RANGE FROM
(SELECT SalesOrderID,SubTotal,
CASE WHEN SubTotal<99
THEN '0-99'
WHEN SubTotal <999
THEN '100-999'
WHEN SubTotal < 9999
THEN '1000-9999'
ELSE '10000-'
END AS 'RANGE'
FROM SalesOrderHeader) as new
GROUP BY RANGE
然而,當我改變了代碼
SELECT COUNT(SalesOrderID), SUM(SubTotal),new.RANGE FROM
(SELECT SalesOrderID,SubTotal,
CASE WHEN SubTotal<99
THEN '0-99'
WHEN SubTotal <999
THEN '100-999'
WHEN SubTotal < 9999
THEN '1000-9999'
ELSE '10000-'
END AS 'RANGE'
FROM SalesOrderHeader) as new
GROUP BY new.RANGE
它的工作通過聲明的RANGE
源表我只是不知道什麼時候我必須聲明變量的來源,因爲RANGE
是在衍生表獨特之處?那是因爲它是一個派生表還是因爲它是一個標量?
另一個問題是我們何時必須給派生表一個新的名字?
只是一個小小提示。如果你正在學習SQL,最好像PostgreSQL一樣使用類似於SQL標準的數據庫。 MySQL提供了很大的自由度,但是因爲這會教你主要是MySQL而不是SQL。 – Wolph 2014-11-01 14:25:36