调用[MySQL]时,定义的case返回“未知列”
我正在为产品的位置创建一个已定义的案例,然后希望稍后将该案例作为值返回。但是,我在“字段列表”中得到错误未知列位置调用[MySQL]时,定义的case返回“未知列”,mysql,Mysql,我正在为产品的位置创建一个已定义的案例,然后希望稍后将该案例作为值返回。但是,我在“字段列表”中得到错误未知列位置 SELECT location, avg(pcnt), max(pcnt), min(pcnt) FROM ( -- create temporary table 'a' to serve data from inner typing table created below SELECT a.date_key, a.num_snowflakes/k.tot_sn
SELECT location, avg(pcnt), max(pcnt), min(pcnt)
FROM (
-- create temporary table 'a' to serve data from inner typing table created below
SELECT a.date_key, a.num_snowflakes/k.tot_snowflakes AS pcnt
FROM (
SELECT
date_key,
CASE
WHEN location_type_key=2 then 'at_customer'
WHEN location_type_key IN (1,13) then 'on_floor'
WHEN location_type_key IN (6,7,11) then 'sat1'
WHEN location_type_key IN (4,5) then 'film'
WHEN location_type_key IN (8,9) then 'repair'
WHEN location_type_key IN (12) then 'inspection'
WHEN location_type_key IN (2) then 'outside'
ELSE NULL END AS location,
COUNT(distinct garment_key) AS num_snowflakes,
COUNT(distinct product_key) AS num_skus
FROM database
-- excluding vendor return and retired
WHERE location_type_key NOT IN (3,10)
-- between 6/15/13 and 8/15/13
AND date_key >= 20130615 AND date_key <= 20130815
-- aggregates by day and location case
GROUP BY date_key, location
) AS a
JOIN
-- create temporary table 'k' to serve 'tot_snowflakes' to table 'a' above
(SELECT b.date_key, sum(b.num_snowflakes) AS tot_snowflakes
FROM (
SELECT
date_key,
CASE
WHEN location_type_key=2 then 'at_customer'
WHEN location_type_key IN (1,13) then 'on_floor'
WHEN location_type_key IN (6,7,11) then 'sat1'
WHEN location_type_key IN (4,5) then 'film'
WHEN location_type_key IN (8,9) then 'repair'
WHEN location_type_key IN (12) then 'inspection'
WHEN location_type_key IN (2) then 'outside'
ELSE NULL END AS location,
COUNT(distinct garment_key) AS num_snowflakes,
COUNT(distinct product_key) AS num_skus
FROM database
WHERE location_type_key NOT IN (3,10)
-- between 6/15/13 and 8/15/13
AND date_key >= 20130615 AND date_key <= 20130815
-- aggregates by day and location case
GROUP BY date_key, location
) AS b
) AS k
ON a.date_key=k.date_key
GROUP BY a.date_key, a.location
) AS z
我试图确保我总是调用正确的表,因此我不确定错误来自何处。有人有什么想法吗
谢谢大家! 最外层的查询从表z中选择 表z由SELECT from表a和JOIN表k派生而来 表a是从SELECT from表数据库派生的 表k是从导出表b中选择导出的 表b是从SELECT from基表数据库派生的 这里的简短回答是,您查询的第一行实际上是询问:
SELECT z.location, avg(z.pcnt), max(z.pcnt), min(z.pcnt)
派生表z只有两列,date_key和pcnt
(SELECT a.date_key, a.num_snowflakes/k.tot_snowflakes AS pcnt
...
) AS z
为了使查询正常工作,表z需要一个位置,该位置必须在每个嵌套选择中都是显式的,直到您可以将其跟踪到要实际读取它的基表为止
另外,查询似乎做的工作比您试图完成的结果所需的工作要多,但我一直盯着它看,直到我的眼睛失去了聚焦能力,因此,我现在将坚持这个答案:每个需要向上渗透其位置列的派生表都需要显式地选择它 数据库?非常有描述性的名字/讽刺的是,这个查询非常庞大,但我在两个连接的选择的字段中没有看到位置。您应该删除外部选择,以检查联接是否真的有字段位置。谢谢,@t.niese,我会试试。@KarolyHorvath,我取出了真实的数据库名称;