database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 7175 게시물 읽기
No. 7175
SQL의 간소화
작성자
ohyouknow(ohyouknow)
작성일
2019-07-15 09:28
조회수
2,265

다음과 같은 SQL을 작성 했습니다.
보시는 바와 같이 select한 결과 값을 가지고 다시 전체를 select 하고 있습니다.
②의 결과 값으로만 다 표현을 하고 싶은데 제 실력으론 참 힘드네요.
★★★①의  문장을 없애고 ★★★②의 문장으로 겨과 값을 표현 하고자 합니다.
고수님들의 조언 부탁 드립니다.
----------------------------------------------------------------------------------------------------------------------
(@p__linq__0 varchar(8000))SELECT --★★★①
    [Project2].[C1] AS [C1],                                [Project2].[JHJUNO] AS [JHJUNO],                  [Project2].[C2] AS [C2],                          [Project2].[TJH1000J_id] AS [TJH1000J_id],
    [Project2].[DateCreated] AS [DateCreated],     [Project2].[ModifiedDate] AS [ModifiedDate],     [Project2].[UpdatedBy] AS [UpdatedBy],   [Project2].[ISREMOVED] AS [ISREMOVED],
    [Project2].[WorkInfo] AS [WorkInfo],             [Project2].[JOKEY] AS [JOKEY],                       [Project2].[JOTYDT] AS [JOTYDT],
    [Project2].[JHSEQC] AS [JHSEQC],           [Project2].[JHVJUN] AS [JHVJUN]
    FROM ( SELECT  --★★★②
               [Distinct1].[JHJUNO] AS [JHJUNO],
               1 AS [C1],
               [Extent2].[TJH1000J_id] AS [TJH1000J_id],       [Extent2].[DateCreated] AS [DateCreated],      [Extent2].[ModifiedDate] AS [ModifiedDate],         [Extent2].[UpdatedBy] AS [UpdatedBy],
               [Extent2].[ISREMOVED] AS [ISREMOVED],         [Extent2].[WorkInfo] AS [WorkInfo],              [Extent2].[JOKEY] AS [JOKEY],                           [Extent2].[JOTYDT] AS [JOTYDT],
               [Extent2].[JHSEQC] AS [JHSEQC],                     [Extent2].[JHVJUN] AS [JHVJUN],
               CASE WHEN ([Extent2].[TJH1000J_id] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C2]
               FROM   (SELECT DISTINCT [Extent1].[JHJUNO] AS [JHJUNO]
                             FROM [com_tran].[as_TJH1000J] AS [Extent1]
                          WHERE ([Extent1].[JHVJUN] = @p__linq__0)
                                OR (([Extent1].[JHVJUN] IS NULL)
                            AND (@p__linq__0 IS NULL)) ) AS [Distinct1]
           LEFT OUTER JOIN [com_tran].[as_TJH1000J] AS [Extent2] ON (([Extent2].[JHVJUN] = @p__linq__0)  OR (([Extent2].[JHVJUN] IS NULL) AND (@p__linq__0 IS NULL)))
           AND ([Distinct1].[JHJUNO] = [Extent2].[JHJUNO])
    )  AS [Project2]
    ORDER BY [Project2].[JHJUNO] ASC, [Project2].[C2] ASC

이 글에 대한 댓글이 총 2건 있습니다.

1. distinct 하고 다시 셀프조인하는데? 무의미하구요.
2. select 하고 인라인뷰로 다시 select 하는데? 무의미합니다.
그냥 단순하게 한번만 select 하면 되는 구문이네요?


SELECT 1 AS [C1]
     , [JHJUNO]
     , CASE WHEN ([TJH1000J_id] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C2]
     , [TJH1000J_id]
     , [DateCreated]
     , [ModifiedDate]
     , [UpdatedBy]
     , [ISREMOVED]
     , [WorkInfo]
     , [JOKEY]
     , [JOTYDT]
     , [JHSEQC]
     , [JHVJUN]
  FROM [com_tran].[as_TJH1000J]
 WHERE (   ( [JHVJUN] = @p__linq__0 )
       OR  ( [JHVJUN] IS NULL AND @p__linq__0 IS NULL )
       )
 ORDER BY [JHJUNO], [C2]
;

마농(manon94)님이 2019-07-15 10:52에 작성한 댓글입니다.

 마농님ㄴ ㄴ답변 감사 드립니다.

ㄷ정답에 주석까지 달아 주시니 몸 둘 바를 모르겠습니다.

큰 도움이 되었습니다.

 

ohyouknow(ohyouknow)님이 2019-07-16 20:36에 작성한 댓글입니다.
이 댓글은 2019-07-16 20:39에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
7178JDBC에서 executeBatch()를 사용해서 데이터를 INSERT할 경우
권기혁
2019-08-19
2152
7177Restore 오류 관련 해결 방법 문의 [2]
박판규
2019-08-01
2210
7176해당날짜 시간별 사람별 카운팅
김지철
2019-07-19
2174
7175SQL의 간소화 [2]
ohyouknow
2019-07-15
2265
7173SQLServer 2016. 에러 해결 방법 고언 부탁드립니다.
해결요청
2019-07-10
2246
7172특정 컬럼 암호화 관련 문의 드립니다.
chu
2019-07-02
2143
7171난제를 하나 만났습니다 [4]
조기석
2019-06-27
2369
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다