2016-08-03 4 views
0

에서 테이블 레코드를 통해 반복 내가 같은 테이블이 있습니다SQL 서버

Screenshot of table

ColumnName의 각 레코드는 다른 테이블, regressionDifferences의 열 이름을 포함합니다. ColumnName을 반복하고 regressionDifferences에있는 각 열을 선택하여 ColumnContent에 삽입하고 싶습니다. 지금은 화면에 열 내용을 인쇄하는 데만 초점을 맞추고 있습니다. 그러면 삽입하는 것에 대해 걱정할 것입니다. 이것은 내가 지금까지 쓴 것입니다 : 각 컬럼의 실제 내용에 반대되는 어떤 이유

DECLARE @LoopCounter INT = 1, @MaxRowNumber INT = 42762, 
@ColumnName VARCHAR(max), @UniqueID VARCHAR(max) 

WHILE(@LoopCounter < @MaxRowNumber) 

BEGIN 

SELECT @ColumnName = ColumnName 
FROM ColumnDifference WHERE RowNumber = @LoopCounter 

SELECT @UniqueID = UniqueID 
FROM ColumnDifference WHERE RowNumber = @LoopCounter 

SELECT DISTINCT @ColumnName AS ColumnContent FROM regressionDifferences rD 
WHERE rD.UniqueID LIKE @UniqueID + '%' 

SET @LoopCounter = @LoopCounter + 1 

END 

이 단지 등의 열, 즉 a_4, a_4, a_4, a_10, a_11, a_6의 이름을 반환합니다.

내가 잘못 가고있는 사람은 누구도 도와 줄 수 있습니까?

감사

답변

1
declare @sql varchar(max); 
set @sql ='SELECT DISTINCT ' + @ColumnName + 'AS ColumnContent FROM regressionDifferences rD WHERE rD.UniqueID LIKE ''' 
         + @UniqueID + '%''' 
exec(@sql); 

필요한 동적 SQL을 생성하려면 위의 쿼리를 사용하십시오.

동적 쿼리 동적 쿼리에서 열 이름으로 처리되지

SELECT DISTINCT 'a_4' AS ColumnContent FROM regressionDifferences rD 
WHERE rD.UniqueID LIKE '2016-07-26''+ '%' 

변수 @ColumnName에 해당합니다. 텍스트로 취급됩니다.

+0

당신은 @MNiGruag입니다. –

-1
SELECT DISTINCT @ColumnName AS ColumnContent FROM regressionDifferences rD 
WHERE rD.UniqueID LIKE @UniqueID + '%' 

뭔가해야 @ColumnName 안?

+0

왜 그런 말을하십니까? 나는 동적 SQL에 익숙하지 않다. 그러나 그것이 맞다고 생각한다. ColumnName 컬럼의 각 레코드에 @ColumnName을 설정 했으므로, 다른 테이블에서 선택하려고한다. 내가 틀렸을 수도있다! – MNiGruag

+0

귀하는 ColumnName을 두 번 선택합니다. 즉, 첫 번째 쿼리의 결과가 세 번째 쿼리에 의해 덮어 쓰기됩니다. 나는 당신의 ColumnName2를 만들고 세 번째 쿼리에서 사용하는 것이 좋습니다. 나는 당신의 질문을 이해할 수 있기를 바랍니다. – Dennisvdh

+0

답변을 통해 질문하지 않아야합니다. 특히 OP가 무엇을 묻는 지 잘 모르는 경우. 이 경우 질문을 무시하고 이해하고 희망적으로 대답 할 수있는 다른 사람으로 이동하십시오. 이것을 반복하여 의견을 남길만큼 충분한 담당자를 모으십시오. 의견에서 당신은 당신이 원하는만큼 설명을 요청할 수 있습니다 ... –