2016-11-16 2 views
1

Написание кода с двумя операторами выбора в большом запросе. Не знаю, почему он не распознает поля. Ошибка получения Field --> 'd3.fiscal_week_begin_date' не найден; вы имели в виду 'fiscal_week_begin_date'?double select in SQL query

SELECT 
    * 
FROM 
    [acquisition.acquisition_program_cost_summary] as test, 
    (
    SELECT 
    d.fiscal_week_begin_date AS fiscal_week_begin_date, 
    d.fiscal_week_end_date AS fiscal_week_end_date 
    FROM 
    datamart.date_dim as d 
    WHERE 
    d.week_of_fiscal_year =30) as d3 
WHERE 
    test.created_timestamp >= d3.fiscal_week_begin_date 
    AND test.created_timestamp <= d3.fiscal_week_end_date; 

ответ

2

В BigQuery запятой (,) не представляет РЕГИСТРИРУЙТЕСЬ а UNION ALL
Так что, скорее всего, вы имели в виду, чтобы сделать JOIN, как показано ниже
Пожалуйста, обратите внимание, вы должны переключиться на BigQuery Standard SQL

SELECT * 
FROM acquisition.acquisition_program_cost_summary as test 
JOIN (
    SELECT 
    d.fiscal_week_begin_date AS fiscal_week_begin_date, 
    d.fiscal_week_end_date AS fiscal_week_end_date 
    FROM datamart.date_dim as d 
    WHERE d.week_of_fiscal_year = 30 
) as d3 
ON test.created_timestamp >= d3.fiscal_week_begin_date 
AND test.created_timestamp <= d3.fiscal_week_end_date 
+0

Спасибо Михаил. Я согласен с вами и попробовал код, но он дает ошибку. – SAM244776

+0

Предложение ON должно быть И = сопоставления одного имени поля из каждой таблицы со всеми именами полей с префиксом имени таблицы. вот ошибка – SAM244776

+0

вы должны переключиться на стандартный SQL! вы работаете/тестируете его в веб-интерфейсе? см. ссылку в моем ответе –