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'+@csql
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

执行脚本 1

我对 SQL 的了解还不是很远,所以请,如果它不是一个大问题,我需要脚本,它将从 Script1 结果创建下一个数据表示: 新脚本结果

4

2 回答 2

0

尝试这个:

您可以将您的第一个结果集添加到一个临时表中并执行以下查询。

您可以根据需要添加别名或 ID。

SELECT id_var1,Param1 FROM [UIR_DB].[dbo].[Variable_Values]
UNION
SELECT id_var2,Param2 FROM [UIR_DB].[dbo].[Variable_Values]
于 2013-04-24T11:48:39.940 回答
0

希望这对您有所帮助。这可以分两步完成

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)
于 2013-04-24T12:17:26.670 回答