variouse 입력 매개 변수를 기준으로 약 20 개의 열을 추가하거나 제거해야합니다. 나는 CASE 문에서 각 줄을 감쌀 수 있다는 것을 알고 있지만, 열 세트에 10 개의 열을 추가 할 필요가있을 때는 여분의 코드 톤이 필요합니다. 동적 SQL 괴물을 만드는 방법은 무엇입니까?입력 매개 변수에 따라 열 집합을 동적으로 추가하려면 어떻게합니까?
DECLARE @AddColumns AS NVARCHAR(20) = 'Column Set 1'
SELECT
col1
, col2
, CASE WHEN @AddColumns = 'Column Set 1' OR @AddColumns = 'Include All Columns'
THEN col3, col4, col5, col6, col7
END
, CASE WHEN @AddColumns = 'Column Set 2' OR @AddColumns = 'Include All Columns'
THEN col8, col9, col10
END
, col11
FROM MyTable
모든 열을 선택하고 클라이언트에서 처리하려는 특별한 이유가 있습니까? –
@Conrad, VB에서 데이터 집합을 사용하고 있으므로 좋은 생각입니다. 그러나 삭제할 열 이름이 길기 때문에 데이터 집합에서 행을 제거하는 if..thens가 복잡해집니다. – BClaydon
두 가지 옵션이 1) 입력을 기반으로 다른 쿼리를 실행하는 큰 IF 문이거나 2) sp_executeSQL을 호출하는 경우입니다. 이 두 가지 접근 방식의 큰 단점은 동적 열을 사용하는 쿼리를 둘러싼 툴링이 그렇게 크지 않다는 것입니다. –