我正在使用MYSQL5.1,虽然我试图找到这方面的文档但是没有成功,其次我想知道以下查询中的逻辑错误..
SQL QUERY
SELECT日期,月份,Sum(fact_1),(2/Sum(fact_2)),2 FROM(SELECT time.date,time.month,time.year,MAX(sales_fact.sell_out_value)as fact_1,0作为fact_2 FROM sales_fact, time_dim as time WHERE time.id = sales_fact.time_id AND time.date ="2008-01-01"GROUP BY time.date ORDER BY time.year UNION SELECT time.date,time.month,time.year,0 as fact_1 ,MAX(sales_target_fact.sell_out_target)as fact_2 FROM sales_target_fact,time_dim as time WHERE time.id = sales_target_fact.time_id AND time.date ="2008-01-01"GROUP BY time.date ORDER BY time.year)as Combined_Table GROUP BY日期按年份排序
错误行
该错误表明您ORDER BY的模糊不清,您需要将SELECT语句括起来向MySQL表明它是如何应用的.
来自MySQL Docs:
要使用ORDER BY或LIMIT子句对整个UNION结果进行排序或限制,请为各个SELECT语句加上括号,并将ORDER BY或LIMIT放在最后一个之后.
因此,根据您的查询,将每个查询放在括号内并将其放在ORDER BY外面:
SELECT date , month , Sum(fact_1) , ( 2 / Sum(fact_2) ) , 2
FROM(
(SELECT time.date, time.month, time.year,
MAX(sales_fact.sell_out_value) as fact_1, 0 as fact_2
FROM sales_fact, time_dim as time
WHERE time.id=sales_fact.time_id AND time.date="2008-01-01"
GROUP BY time.date)
UNION
(SELECT time.date, time.month, time.year, 0 as fact_1,
MAX(sales_target_fact.sell_out_target) as fact_2
FROM sales_target_fact, time_dim as time
WHERE time.id=sales_target_fact.time_id AND time.date="2008-01-01"
GROUP BY time.date)
ORDER BY time.year
) as Combined_Table GROUP BY date ORDER BY year
Run Code Online (Sandbox Code Playgroud)
或者,如果您希望在ORDER BY每个语句之前单独应用UNION,请将ORDER BY两个SELECT语句中的每个语句放在括号内.
SELECT date , month , Sum(fact_1) , ( 2 / Sum(fact_2) ) , 2
FROM(
(SELECT time.date, time.month, time.year,
MAX(sales_fact.sell_out_value) as fact_1, 0 as fact_2
FROM sales_fact, time_dim as time
WHERE time.id=sales_fact.time_id AND time.date="2008-01-01"
GROUP BY time.date
ORDER BY time.year)
UNION
(SELECT time.date, time.month, time.year, 0 as fact_1,
MAX(sales_target_fact.sell_out_target) as fact_2
FROM sales_target_fact, time_dim as time
WHERE time.id=sales_target_fact.time_id AND time.date="2008-01-01"
GROUP BY time.date
ORDER BY time.year)
) as Combined_Table GROUP BY date ORDER BY year
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5018 次 |
| 最近记录: |