2013-04-24 2 views
0

데이터 표현의 제 문제를 해결해주세요. ,특수 데이터 표현을위한 SQL 스크립트

Declare params cursor for 
Select distinct id_variable from [UIR_DB].[dbo].[Variable_Values] 
open params 
Declare @idparam int 
Declare @csql nvarchar(max) = '' 
Declare @csql2 nvarchar(max) = '' 
declare @csq13 nvarchar(max) = '' 
Declare @i int = 1 
fetch next from params into @idparam 
while @@FETCH_STATUS = 0 
begin 
Select @csql2 = @csql2 +', id_var'+LTRIM(Str(@i))+ ', param' +LTrim(Str(@i)) 
Select @csql = ' (Select id_variable as id_var'+LTrim(Str(@i))+', value as param'+LTrim(Str(@i))+' from 
[UIR_DB].[dbo].[Variable_Values] where id_variable = '+LTrim(Str(@idparam))+') a'+LTrim(Str(@i))+' 
cross join'[email protected] 
Set @i = @i+1 
fetch next from params into @idparam 
end 
Select @csql = 'Select '+SubString(@csql2,2,LEN(@csql2)-1)+' from 
'+SubString(@csql,1,LEN(@csql)-11)+'order by'+SubString(@csql2,2,LEN(@csql2)-1) 
print @csql 
exec sp_executesql @csql 
close params 
deallocate params 

execute Script 1

SQL의 내 지식은 지금까지, 그래서, 그것은 큰 문제가되지 않을 것이다하지 않을 경우 :

나는 다음과 같은 데이터 프레젠테이션을 만들고 일부 SQL 스크립트를 가지고 New script results

답변

0

이 시도 :

을 그 의지는 script1이 결과에서 다음 데이터 표현을 생성 스크립트를 필요

첫 번째 결과 집합을 하나의 임시 테이블에 추가하고 다음 쿼리를 수행 할 수 있습니다.

당신은 requriment 당 별칭이나 ID를 추가 할 수 있습니다.

SELECT id_var1,Param1 FROM [UIR_DB].[dbo].[Variable_Values] 
UNION 
SELECT id_var2,Param2 FROM [UIR_DB].[dbo].[Variable_Values] 
+0

더 많은, 그 variable1과 variable2 일 수 있기 때문에 그것은 다이나믹 SQL 쿼리 여야합니다. –

0

희망이 도움이 될 것입니다. 이 2 단계

1) 결과 세트에서 레코드에 대한 자동 증가 번호를 생성 수행 할 수 있습니다

WITH CTE 
AS 
(
    SELECT ROW_NUMBER() OVER(ORDER BY id_var1) AS id_sample, 
    [id_var1], [param1],[id_var2], [param2] 
    FROM Table1 
) 

참고 : 코드에서 증가 수를 추가 할 수 있습니다, 위에서 언급 한 단지 예를

2) 원하는 결과를 얻기 위해 쿼리 아래 사용

SELECT 
c.id_sample, 
c.id_variable 
,c.value 
FROM CTE 
CROSS APPLY 
(
    VALUES 
    (id_sample,id_var1,param1), 
    (id_sample,id_var2,param2) 
)c(id_sample,id_variable,value) 
+0

변수 1과 변수 2가 더 많을 수 있기 때문에 dinamic SQL 쿼리 여야합니다. –

관련 문제