마포돌주먹
225
2021-09-15 17:11:29 작성 2021-09-15 17:32:43 수정됨
13
377

sql 쿼리 질문있습니다!!


SELECT
revenue, grossProfit, operatingIncomeLoss, profitLoss, comprehensiveIncome,
assets, liabilities, equity, cashFlowsFromUsedInOperatingActivities, cashFlowsFromUsedInInvestingActivities,
cashFlowsFromUsedInFinancingActivities, increaseDecreaseInCashAndCashEquivalents, currentAssets, currentLiabilities, costOfSales,
shortTermTradeReceivable, inventories, propertyPlantAndEquipment, revenueCumulativeAmount, grossProfitCumulativeAmount,
operatingIncomeLossCumulativeAmount, profitLossCumulativeAmount, comprehensiveIncomeCumulativeAmount,
,'035720'
'2021'
'CFS'
'11013'
FROM tb_web_financial_statement T1
INNER JOIN
(
SELECT
t3.ISU_SRT_CD, t2.CORP_CODE
FROM tb_stock_list t3
,tb_corpcode t2
WHERE t3.ISU_SRT_CD = t2.STOCK_CODE
AND t3.ISU_SRT_CD = '035720'
AND t3.DELETE_YN = 'N'
) T2
ON T1.CORP_CODE = T2.CORP_CODE
AND T1.BSNS_YEAR = '2020'
AND T1.FS_DIV = 'CFS'
AND T1.REPRT_CODE = '11013';
이 결과 값이랑
SELECT STOCK_CODE                  AS stockCode,
CORP_CODE AS corpCode,
BSNS_YEAR AS bsnsYear,
REPRT_CODE AS reprtCode,
RCEPT_NO AS rceptNo,
CORP_CLS AS corpCls,
CORP_CODE AS corpCode,
CORP_NAME AS corpName,
SE AS se,
NMPR AS nmpr,
FYER_SALARY_TOTAMT AS fyerSalaryTotamt,
JAN_SALARY_AM AS janSalaryAm,
RM AS rm
FROM TB_UNREGISTERED_EXECUTIVE
이거 결과 값이랑 합치고 싶은데 컬럼 값도 다 다르고 갯수도 다릅니다.
UNION UNION ALL LEFT 조인 RIGHT 조인 써봤는데 안 되네요 참고로 마리아 db입니다

-1
0
  • 답변 13

  • 장쭌
    91
    2021-09-15 17:14:05 작성 2021-09-15 17:17:35 수정됨

    합친다는 의미가 어떻게를 원하는지는 모르겠지만, union을 쓸 경우는 

    컬럼의 개수 및 컬럼의 타입이 일치하여야 합니다.


    위 첫번째 조회하는 컬럼의 개수가 10개라면

    두번째 조회하는 select 문에서 10개의 값을 맞추셔야 합니다.


    ex)

    select  title, content, create_dt

    from a 


    union 


    select '' as title, '' as content, create_dt


    없는 컬럼의 경우의 alias 로 컬럼의 이름을 맞춰줘야 합니다.~

  • 마포돌주먹
    225
    2021-09-15 17:16:55 작성 2021-09-15 17:18:16 수정됨

     장쭌

    이 두개의 결과 값을 합쳐서 한 번에 보고 싶어요

  • 장쭌
    91
    2021-09-15 17:19:51

    저 값을 합쳐야하는 이유가 있을까요..? 너무 불일치하는 데이터로 

    쿼리로 하나의 데이터로 합치는 것 보다 따로 결과값을 담아서 로직으로 푸는 방법이 나을 것으로 보이는데요...

  • 마포돌주먹
    225
    2021-09-15 17:21:39

     장쭌

    근데 그 로직이 너무 복잡해서 쿼리로 합치는 게 제일 나을 거 같아서요..

    근데  저 값을 합치는 게 쉽지가 않네요 ㅠㅠ

  • 마포돌주먹
    225
    2021-09-15 17:24:03

     Eleutherius

    컬럼 수랑 갯수가 너무 달라서 union보다는 join해야 될 거 같습니다

  • 장쭌
    91
    2021-09-15 17:25:02

    join을 하려면 두 테이블간의 연관 관계가 있는 key 값이 필요합니다...

  • 마포돌주먹
    225
    2021-09-15 17:28:26 작성 2021-09-15 17:28:46 수정됨


  • 마포돌주먹
    225
    2021-09-15 17:28:59


  • 장쭌
    91
    2021-09-15 17:29:02

    그런데.. 쿼리를 보면 문법 오류가 날 것같은데 동작하나요?

       operatingIncomeLossCumulativeAmount, profitLossCumulativeAmount, comprehensiveIncomeCumulativeAmount,
    '035720' <-- , 이 누락되어 에러가 날것으로 보여지는데..
    '2021'
    'CFS'
    '11013'
  • 마포돌주먹
    225
    2021-09-15 17:29:27

     장쭌

    CORP_CODE 있습니다!!!

  • 마포돌주먹
    225
    2021-09-15 17:30:38

    장쭌

    아아 짤린거에요 실제로는 , 있습니다!

  • 장쭌
    91
    2021-09-15 17:33:11 작성 2021-09-15 17:34:11 수정됨

    첫번째 쿼리에서 inner join이 끝난 구절에 left join 으로 두번째 테이블을 seq 키로 조인을 거시고

    select 구절에 두번째 테이블에서 뽑으실 테이터를 뽑으면 될 것같아보이네요 

    INNER JOIN
    (
    SELECT
    t3.ISU_SRT_CD, t2.CORP_CODE
    FROM tb_stock_list t3
    ,tb_corpcode t2
    WHERE t3.ISU_SRT_CD = t2.STOCK_CODE
    AND t3.ISU_SRT_CD = '035720'
    AND t3.DELETE_YN = 'N'
    ) T2
    ON T1.CORP_CODE = T2.CORP_CODE
    AND T1.BSNS_YEAR = '2020'
    AND T1.FS_DIV = 'CFS'
    AND T1.REPRT_CODE = '11013'
    left join TB_UNREGISTERED_EXECUTIVE T2 on T1.seq = T2.seq
  • 마포돌주먹
    225
    2021-09-15 17:38:18

     장쭌

    원래 이렇게 해봤었는데 결과가 그냥 이거랑 똑같아요..


    SELECT
    revenue, grossProfit, operatingIncomeLoss, profitLoss, comprehensiveIncome,
    assets, liabilities, equity, cashFlowsFromUsedInOperatingActivities, cashFlowsFromUsedInInvestingActivities,
    cashFlowsFromUsedInFinancingActivities, increaseDecreaseInCashAndCashEquivalents, currentAssets, currentLiabilities, costOfSales,
    shortTermTradeReceivable, inventories, propertyPlantAndEquipment, revenueCumulativeAmount, grossProfitCumulativeAmount,
    operatingIncomeLossCumulativeAmount, profitLossCumulativeAmount, comprehensiveIncomeCumulativeAmount,
    '035720'
    '2021'
    'CFS'
    '11013'
    FROM tb_web_financial_statement T1
    INNER JOIN
    (
    SELECT
    t3.ISU_SRT_CD, t2.CORP_CODE
    FROM tb_stock_list t3
    ,tb_corpcode t2
    WHERE t3.ISU_SRT_CD = t2.STOCK_CODE
    AND t3.ISU_SRT_CD = '035720'
    AND t3.DELETE_YN = 'N'
    ) T2
    ON T1.CORP_CODE = T2.CORP_CODE
    AND T1.BSNS_YEAR = '2020'
    AND T1.FS_DIV = 'CFS'
    AND T1.REPRT_CODE = '11013'
  • 로그인을 하시면 답변을 등록할 수 있습니다.