테이블 결합, 하나의 필드에 대한 합계, 날짜 및 다른 필드별로 구분

가지

두 테이블을 결합하고 있습니다. 그런 다음 두 개의 다른 날짜 기간에 대해 하나의 테이블에서 두 개의 열을 합산합니다.

그러나 내가 원하는 것은 테이블 중 하나의 다른 필드에서 WHERE 조건으로 정의 된 두 개의 필드 세트로 날짜 범주를 더 분리하는 것입니다.

그러나이 결과를 얻을 수 없습니다. ORA-00936 :식이 없습니다.

이것은 구문 오류 일 가능성이 높지만 시도하는 동안 여러 날짜와 조건으로 예제를 찾을 수 없었기 때문에 이것을 작성하는 방법에 대한 예제를 찾을 수 없습니다.

내 코드 :

select SOME_CATEGORY_1, SOME_CATEGORY_2,
                WHERE (SOME_CATEGORY_3 = 'Value A', 
                sum(case when oc.week_start_date between SYSDATE-(52*7) and SYSDATE then ms.cash_sales else 0 end) A_TY_CashSales,
                sum(case when oc.week_start_date between SYSDATE-(52*7) and SYSDATE then ms.unit_sales else 0 end) A_TY_UnitSales,
                sum(case when oc.week_start_date between SYSDATE-(104*7) and SYSDATE-(53*7) then ms.cash_sales else 0 end) A_LY_CashSales,
                sum(case when oc.week_start_date between SYSDATE-(104*7) and SYSDATE-(53*7) then ms.unit_sales else 0 end) A_LY_UnitSales
                ),
                WHERE (SOME_CATEGORY_3 = 'Value B', 
                sum(case when oc.week_start_date between SYSDATE-(52*7) and SYSDATE then ms.cash_sales else 0 end) B_TY_CashSales,
                sum(case when oc.week_start_date between SYSDATE-(52*7) and SYSDATE then ms.unit_sales else 0 end) B_TY_UnitSales,
                sum(case when oc.week_start_date between SYSDATE-(104*7) and SYSDATE-(53*7) then ms.cash_sales else 0 end) B_LY_CashSales,
                sum(case when oc.week_start_date between SYSDATE-(104*7) and SYSDATE-(53*7) then ms.unit_sales else 0 end) B_LY_UnitSales
                )           
from MY_TABLE mt
join MY_OTHER_TABLE mot on mot.mykey = mt.mykey
join calendar_table ct on ct.week_id = ms.week_id
group by SOME_CATEGORY_1, SOME_CATEGORY_2
order by 1,2,3 desc

결과는 두 개의 개별 선택을 사용하여 수행 할 수 있지만 가능하면 단일 쿼리에서 두 사례에 대한 올해와 지난 연도 합계를 보여주는 단일 쿼리를 갖고 싶습니다.

어떻게하면 되나요?

참고로이 쿼리는 Oracle 데이터베이스에 적용됩니다.

DrabJay

예를 들어 case제한 문에 다른 절을 추가합니다 .some_category_3

select some_category_1
     , some_category_2
     , sum(case
             when     some_category_3 = 'value a'
                  and oc.week_start_date between sysdate-(52*7) and sysdate
               then ms.cash_sales
             else 0
           end) a_ty_cashsales
     , sum(case
             when     some_category_3 = 'value a'
                  and oc.week_start_date between sysdate-(52*7) and sysdate
               then ms.unit_sales
             else 0
           end) a_ty_unitsales
     , sum(case
             when     some_category_3 = 'value a'
                  and oc.week_start_date between sysdate-(104*7) and sysdate-(53*7)
               then ms.cash_sales
             else 0
           end) a_ly_cashsales
     , sum(case
             when     some_category_3 = 'value a'
                  and oc.week_start_date between sysdate-(104*7) and sysdate-(53*7)
               then ms.unit_sales
             else 0
           end) a_ly_unitsales
     , sum(case
             when     some_category_3 = 'value b'
                  and oc.week_start_date between sysdate-(52*7) and sysdate
               then ms.cash_sales
             else 0
           end) b_ty_cashsales
     , sum(case
             when     some_category_3 = 'value b'
                  and oc.week_start_date between sysdate-(52*7) and sysdate
               then ms.unit_sales
             else 0
           end) b_ty_unitsales
     , sum(case
             when     some_category_3 = 'value b'
                  and oc.week_start_date between sysdate-(104*7) and sysdate-(53*7)
               then ms.cash_sales
             else 0
           end) b_ly_cashsales
     , sum(case
             when     some_category_3 = 'value b'
                  and oc.week_start_date between sysdate-(104*7) and sysdate-(53*7)
               then ms.unit_sales
             else 0
           end) b_ly_unitsales
from my_table mt
     join my_other_table mot
       on mot.mykey = mt.mykey
     join calendar_table ct
       on ct.week_id = ms.week_id
group by some_category_1
       , some_category_2
order by some_category_1
       , some_category_2

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

선택한 값에 따라 데이터를 필터링하고 Google 스프레드 시트에서 날짜별로 정렬 및 계산합니다.

분류에서Dev

다른 테이블 열 값에 대한 필드 합계 계산

분류에서Dev

SQL에서 다른 테이블의 날짜를 기반으로 한 테이블의 수량 합계 계산

분류에서Dev

mysqli datetime 필드에 대한 날짜 및 시간 변수 결합

분류에서Dev

SQL-동일한 테이블의 두 필드를 다른 테이블의 단일 필드에 결합

분류에서Dev

SQL-동일한 테이블의 두 필드를 다른 테이블의 단일 필드에 결합

분류에서Dev

다른 MySQL 테이블에있는 다른 필드의 합계

분류에서Dev

다른 월 및 합계 값에 대해 동일한 테이블의 두 쿼리를 결합합니다.

분류에서Dev

Python MySQLdb는 기존 MySQL 테이블에 CSV를 업로드합니다. 이후, 날짜 및 시간 필드가 잘못되거나 잘립니다.

분류에서Dev

한 테이블에서 다른 테이블의 최대 날짜 전후에 발생한 레코드 계산

분류에서Dev

단일 MySQL 쿼리를 사용하여 동일한 테이블 내의 다른 열에있는 두 날짜 필드의 차이를 설정해야합니다.

분류에서Dev

채워진 필드의 최대 날짜로 두 테이블을 결합하십시오.

분류에서Dev

MySQL-최대 날짜별로 테이블 및 순서 결합

분류에서Dev

VB.NET & Linq : 데이터 테이블 열 합계 및 다른 열의 날짜별로 그룹화

분류에서Dev

포함 테이블 필드가 다른 두 개의 다른 테이블에 대한 합계를 계산하는 방법

분류에서Dev

Pandas 및 csv는 데이터 프레임으로 가져옵니다. 날짜 및 날짜 필드를 하나로 결합하는 가장 좋은 방법

분류에서Dev

여러 필드를 다른 테이블에서 하나로 결합

분류에서Dev

날짜별로 두 테이블을 비교하고, 날짜별로 테이블 2의 값을 합산하고, 테이블 1의 합계가있는 세 번째 테이블로 값을 출력하는 방법이 필요합니다.

분류에서Dev

MySQL은 한 테이블에서 다른 필드의 다른 테이블로 데이터를 복사합니다.

분류에서Dev

R 상위 n 개의 최근 날짜에 대한 부분 집합 화로 날짜 테이블 변환

분류에서Dev

Elasticsearch에서 날짜 필드별로 다른 필드를 집계하는 방법

분류에서Dev

다른 테이블에서 테이블의 한 필드 계산

분류에서Dev

다음 7 일 동안의 생일 수 및 각 날짜 및 합계에 대한 수 필요

분류에서Dev

각 날짜에 대한 테이블을 업데이트하고 다른 테이블의 나머지 사이트를 추가합니다.

분류에서Dev

3 개의 테이블을 결합하고 다른 필드 계산

분류에서Dev

하나의 테이블 열 이름 및 다른 테이블의 열 값으로 다른 테이블 결합

분류에서Dev

두 테이블을 결합하기 위해 날짜 필드를 만들려고합니다.

분류에서Dev

해당 날짜 범위에 대해 다른 테이블의 이름으로 날짜를 분류하는 레코드 별

분류에서Dev

SQL에서 서로 다른 두 테이블의 두 필드 결합

Related 관련 기사

  1. 1

    선택한 값에 따라 데이터를 필터링하고 Google 스프레드 시트에서 날짜별로 정렬 및 계산합니다.

  2. 2

    다른 테이블 열 값에 대한 필드 합계 계산

  3. 3

    SQL에서 다른 테이블의 날짜를 기반으로 한 테이블의 수량 합계 계산

  4. 4

    mysqli datetime 필드에 대한 날짜 및 시간 변수 결합

  5. 5

    SQL-동일한 테이블의 두 필드를 다른 테이블의 단일 필드에 결합

  6. 6

    SQL-동일한 테이블의 두 필드를 다른 테이블의 단일 필드에 결합

  7. 7

    다른 MySQL 테이블에있는 다른 필드의 합계

  8. 8

    다른 월 및 합계 값에 대해 동일한 테이블의 두 쿼리를 결합합니다.

  9. 9

    Python MySQLdb는 기존 MySQL 테이블에 CSV를 업로드합니다. 이후, 날짜 및 시간 필드가 잘못되거나 잘립니다.

  10. 10

    한 테이블에서 다른 테이블의 최대 날짜 전후에 발생한 레코드 계산

  11. 11

    단일 MySQL 쿼리를 사용하여 동일한 테이블 내의 다른 열에있는 두 날짜 필드의 차이를 설정해야합니다.

  12. 12

    채워진 필드의 최대 날짜로 두 테이블을 결합하십시오.

  13. 13

    MySQL-최대 날짜별로 테이블 및 순서 결합

  14. 14

    VB.NET & Linq : 데이터 테이블 열 합계 및 다른 열의 날짜별로 그룹화

  15. 15

    포함 테이블 필드가 다른 두 개의 다른 테이블에 대한 합계를 계산하는 방법

  16. 16

    Pandas 및 csv는 데이터 프레임으로 가져옵니다. 날짜 및 날짜 필드를 하나로 결합하는 가장 좋은 방법

  17. 17

    여러 필드를 다른 테이블에서 하나로 결합

  18. 18

    날짜별로 두 테이블을 비교하고, 날짜별로 테이블 2의 값을 합산하고, 테이블 1의 합계가있는 세 번째 테이블로 값을 출력하는 방법이 필요합니다.

  19. 19

    MySQL은 한 테이블에서 다른 필드의 다른 테이블로 데이터를 복사합니다.

  20. 20

    R 상위 n 개의 최근 날짜에 대한 부분 집합 화로 날짜 테이블 변환

  21. 21

    Elasticsearch에서 날짜 필드별로 다른 필드를 집계하는 방법

  22. 22

    다른 테이블에서 테이블의 한 필드 계산

  23. 23

    다음 7 일 동안의 생일 수 및 각 날짜 및 합계에 대한 수 필요

  24. 24

    각 날짜에 대한 테이블을 업데이트하고 다른 테이블의 나머지 사이트를 추가합니다.

  25. 25

    3 개의 테이블을 결합하고 다른 필드 계산

  26. 26

    하나의 테이블 열 이름 및 다른 테이블의 열 값으로 다른 테이블 결합

  27. 27

    두 테이블을 결합하기 위해 날짜 필드를 만들려고합니다.

  28. 28

    해당 날짜 범위에 대해 다른 테이블의 이름으로 날짜를 분류하는 레코드 별

  29. 29

    SQL에서 서로 다른 두 테이블의 두 필드 결합

뜨겁다태그

보관