Teradata에 Table_A와 Table_B라는 두 개의 테이블이 있습니다. 그들 사이에 LEFT JOIN이 있습니다. 나중에 두 테이블의 특성을 포함하는 SELECT 문을 만들고 있습니다.선택한 비 집계 값은 연관된 그룹의 일부 여야합니다.
SELECT
attribute_1
attribute_2
...
attribute_N
이후 SUM 계산식을 사용하여 계산을 수행합니다.
SUM (
CASE WHEN Attribute_1 > 2 THEN attribute_2*1.2
ELSE 0
End
(이 예제는 선택 부분에 속성에 사용되는) :이 함수는 다음과 같이 보인다.
그러나 나는 또한 select 문에없는 CASE 부품 속성에서 사용 -이 liek 뭔가 : 물론
SUM (
CASE WHEN Attribute_X > 2 THEN attribute_Y*1.2
ELSE 0
End
을 내가 1, 2에 의해 GROUP을하고있는 중이 야 말에, ..., N
내가 선택한 오류는 "선택한 비 집계 값은 연관된 그룹의 일부 여야합니다."입니다. 게다가, 나는 SELECT 부분에서 선택된 속성의 수를 십억 번 확인했으며, N입니다. 질문은 - 왜이 오류가 발생합니까? SELECT 부분에 포함되어 있지 않은 SUM 부분, 즉 CASE 부품 속성 (attribute_X 및 attribute_Y)을 사용하고 있기 때문입니까?
마지막 문장의 청사진이 보입니다. 같은 :
INSERT INTO table_new
SELECT
attribute_1,
attribute_2,
...
attribute_N,
SUM (
CASE WHEN Attribute_1 > 2 THEN attribute_2*1.2
ELSE 0
End
) as sum_a,
SUM (
CASE WHEN Attribute_X > 2 THEN attribute_Y*1.2
ELSE 0
End
) as sum_X
FROM table_a LEFT JOIN table_B
ON ...
GROUP BY 1,2,...,N
나는 당신이 설명한대로했는데, 여전히 나는 같은 메시지를 얻고있다. 제 생각에 CASE 부분에서 사용되는 속성 (예 : SUM part - aggragate 함수)도 SELECT 부분에 포함되어야합니다. 이는 GROUP BY 부분에 포함되어야 함을 의미합니다 (비록 내가 필요 없다고하더라도). 즉, 필요한 데이터를 정확하게 얻기 위해 다른 SELECT와 다른 SUM을 수행해야한다는 의미입니다. – Adam
오류를 발견했습니다. SUM 부분은 더 많은 하위 부품으로 구성되었습니다. 예 : "금액 - SUM (...) + SUM (...)". 나는 "양"부분에 속성을 포함 시켰습니다. – Adam