(해결완료) 쿼리 질문드립니다 ㅠㅠ

   조회 1758   추천 0    

 좌측테이블 데이터에서 우측테이블처럼 출력하고자합니다(2번째 행만 없어졌다 보시면됩니다)

Select MAX(Coldate) as ColDate, ColName From Table Group by ColName으로하면




여기까지는 출력해냈습니다.

이러저러해도 뒤엣 3, 4번째 컬럼을 출력하기 어려워 조언을 구합니다 ㅠㅠ



짧은글 일수록 신중하게.
일국 2022-11
원하시는게 맞는가 모르겠습니다.

WITH TEMP_TABLE AS
(SELECT '2022-11-29' COLDATE, '상품A' COLNAME, 14 COLWIDTH,  9 COLHEIGHT FROM DUAL UNION ALL
 SELECT '2022-11-28' COLDATE, '상품A' COLNAME, 15 COLWIDTH,  9 COLHEIGHT FROM DUAL UNION ALL
 SELECT '2022-11-28' COLDATE, '상품B' COLNAME, 52 COLWIDTH, 52 COLHEIGHT FROM DUAL UNION ALL
 SELECT '2022-11-28' COLDATE, '상품C' COLNAME, 27 COLWIDTH, 27 COLHEIGHT FROM DUAL UNION ALL
 SELECT '2022-11-28' COLDATE, '상품D' COLNAME, 15 COLWIDTH,  9 COLHEIGHT FROM DUAL UNION ALL
 SELECT '2022-11-2E' COLDATE, '상품E' COLNAME, 14 COLWIDTH,  9 COLHEIGHT FROM DUAL)
SELECT A.COLDATE, A.COLNAME, A.COLWIDTH, A.COLHEIGHT
  FROM TEMP_TABLE A
 INNER JOIN (
      SELECT COLNAME, MAX(COLDATE) COLDATE
        FROM TEMP_TABLE
        GROUP BY COLNAME
            ) B ON A.COLDATE = B.COLDATE AND A.COLNAME = B.COLNAME;
     
레반터스 2022-11
MSSQL 2000에서는 중복항목이 나와서 distinct써서 제거하고 확인중입니다!
DAP박인호 2022-11
대충 이런식이면 해결 가능합니다.
DB 종류, 버전에 따라 다를 수 있으니
쿼리 질문은 사용하는 DB 종류 버전을 기본으로 표기해야 정확한 답변을 받을 수 있습니다.

SELECT ColDate, ColName, ColWidth, ColHeight
FROM (
SELECT rank() over (partition by ColName order by ColDate DESC) rk
      ,*
FROM 테이블명
) lst
WHERE rk=1

데이터가 많고 ColDate, ColName 이 PK(또는 인덱스가 설정된)인 테이블의 경우 위에 일국님이 설명하신 방법으로 해야
속도가 빠름니다.
     
레반터스 2022-11
기본적인걸 제가 깜빡했군요 끔찍하게도 MSSQL 2000을 쓰고있어서 여러가지 내장함수가 없습니다 ㅠㅠ
DAP박인호 2022-11
MSSQL 2000 이시면 아래 쿼리로 해결 될 듯 합니다.

WITH TEMP_TABLE AS (
 SELECT '2022-11-29' COLDATE, '상품A' COLNAME, 14 COLWIDTH,  9 COLHEIGHT  UNION ALL
 SELECT '2022-11-28' COLDATE, '상품A' COLNAME, 15 COLWIDTH,  9 COLHEIGHT  UNION ALL
 SELECT '2022-11-28' COLDATE, '상품B' COLNAME, 52 COLWIDTH, 52 COLHEIGHT  UNION ALL
 SELECT '2022-11-28' COLDATE, '상품C' COLNAME, 27 COLWIDTH, 27 COLHEIGHT  UNION ALL
 SELECT '2022-11-28' COLDATE, '상품D' COLNAME, 15 COLWIDTH,  9 COLHEIGHT  UNION ALL
 SELECT '2022-11-27' COLDATE, '상품E' COLNAME, 14 COLWIDTH,  9 COLHEIGHT
)

SELECT ColDate, ColName, ColWidth, ColHeight
FROM (
SELECT ( select count(*)
from TEMP_TABLE counter
where counter.ColName = TEMP_TABLE.ColName -- Partition
and counter.ColDate >= TEMP_TABLE.ColDate  -- Order
) as rk
  ,*
FROM TEMP_TABLE
) lst
WHERE rk=1
     
레반터스 2022-11
놀랍도록 정상적으로 작동합니다 대단한 내공이십니다...!


QnA
제목Page 452/5730
2014-05   5265669   정은준1
2015-12   1790654   백메가
2024-08   2005   아마카시
2018-11   3451   Sikieiki
2021-04   3871   쭈빠
2012-02   5168   임송순
2016-08   3945   헤즐넛
2021-04   3754   무아
2022-12   2269   요를레이
2016-08   5370   엠브리오
2024-08   1418   Sakura24
2015-07   4510   linesis
2016-08   6059   컨트롤샷
2024-08   1687   Rich
2024-08   1175   뚜뚜김대원
2016-08   5911   고즈넉
2021-05   2534   앤드유저
2014-04   3698   Won낙연
2024-09   1208   파피푸페
2018-12   2890   미수맨
2014-04   4846   코난1234
2015-08   6906   전설속의미…