2017-05-23 11 views
1

교차 변이로 Redshift에서 이상한 문제가 있습니다. 나는 일을 생성하고 일부 ID와 함께 참여하려고합니다. 샘플 쿼리가 이것이다 :Redshift : 교차 결합으로 데이터가 사라집니다.

with ids as (
Select number as id 
from models.number_10000 
limit 10 
), 
day as (
SELECT 
TO_CHAR(DATEADD(day,num.number,CAST(DATEADD(day,-463,GETDATE()) AS DATE)),'YYYY-MM-DD') as date_string 
FROM 
(Select * from models.number_10000 limit 463) 
as num 
) 
SELECT 
    id,date_string 
from ids,day 

모든 지금까지 잘 작동한다. 그러나 그때까지 그룹화하면 결과가 없습니다.

with ids as (
Select number as id 
from models.number_10000 
limit 10 
), 
day as (
SELECT 
TO_CHAR(DATEADD(day,num.number,CAST(DATEADD(day,-463,GETDATE()) AS DATE)),'YYYY-MM-DD') as date_string 
FROM 
(Select * from models.number_10000 limit 463) 
as num 
) 
SELECT 
    id,date_String 
from ids,day 
group by 1,2 

어떻게 이런 일이 발생하고 있습니까? 나는 비슷한 것을 직면하지 못했습니다. 나는 그것이 십자가에 조인과 그룹에 의한 무엇인가 이다을 추측한다. 그러나 그것은 매우 이상하게 보인다. 의견이 있으십니까?

답변

0

나는 다음과 같이 시작 했죠 :

  1. 주 당신의 JOIN 명시 적으로 (ANSI92 스타일).
  2. 명시 적으로 그룹화 할 항목의 이름을 명시하십시오.
  3. 또한 집계 함수가 없으므로 GROUP BY 문을 제거하고 select 문에 DISTINCT 절이 있어야합니다.
+0

그것은, 내가 노력 여전히 동일합니다 : 같은 ID를 가진 ( 선택 수 models.number_10000 제한 10 에서 ID 등)로 일 ( 이 TO_CHAR를 선택 (DATEADD (일, num.number, CAST (DATEADD (일, -463, GETDATE()) DATE AS)), 'YYYY-MM-DD') models.number_10000 제한 463) 납입 등 ) 별개의 을 선택 에서 (SELECT * FROM 을 DATE_STRING로 \t id, date_String ids CROSS JOIN의 날 –