Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql T-SQL-从视图中的数据创建图形_Tsql - Fatal编程技术网

Tsql T-SQL-从视图中的数据创建图形

Tsql T-SQL-从视图中的数据创建图形,tsql,Tsql,我对T-SQL、存储过程和MicrosoftSQLServerManagementStudio相当陌生 我在数据库中创建了一个名为BodyBasics的视图。在该视图中,有一列称为BackAngle。在BackAngle列中,我列出了用户背部弯曲的角度。数据类型为float,范围从90到180 此视图列中的一些示例值包括: 173,10786534157, 147,423570266, 170,196359990068, 148,774131860277, 153,439316876929, 1

我对T-SQL、存储过程和MicrosoftSQLServerManagementStudio相当陌生

我在数据库中创建了一个名为BodyBasics的视图。在该视图中,有一列称为BackAngle。在BackAngle列中,我列出了用户背部弯曲的角度。数据类型为float,范围从90到180

此视图列中的一些示例值包括:

173,10786534157, 147,423570266, 170,196359990068, 148,774131860277, 153,439316876929, 147,063469480619, 173,861485242977, 172,1319088368, 145,416983331938, 163,02645970309, 147,65814822779, 146,212510299859, 173,769456580658
视图如下所示:

| ID | Timestamp | RecordingId | BodyNumber | BackAngle |
我想做的是从视图中按时间顺序选择回角数据,并将数据绘制成图形

我尝试过的查询是:

GO
DECLARE @BackAngle TABLE(Backangle FLOAT);

INSERT @BackAngle(Backangle) SELECT dbo.ViewBodies.BackAngle FROM dbo.ViewBodies
WHERE dbo.ViewBodies.BackAngle IS NOT NULL
ORDER BY Timestamp;
SELECT geometry::STGeomFromText( 'LINESTRING(' + @BackAngle(Backangle) + ')' );
GO
我从这段代码中得到的错误是:

Msg 102, Level 15, State 1, Line 7
Incorrect syntax near 'Backangle'.
Msg 102, Level 15, State 1, Line 9
Incorrect syntax near '('.
我从本文中获得了geometry::stGeomeFromText语法:


有人能指出我的代码有什么问题吗?这是否是正确的方法?有其他选择吗?

您不需要临时表,您应该创建一个包含变量的文本字符串,以便在LINESTRING中使用它。作为比例线,可以使用行号(1,2,3,4,…)


请举例说明您在
BackAngle
中的值。没有必要先填充已声明的表。您可以直接调用该函数……一些示例:17310786534157、147423570266、170196359990068、148774131860277、15343916876929、147063469480619、173861485242977、1721319088368、145416983331938、16302645970309、14765814822779、1462510299959、173769456580658
DECLARE @WKT AS VARCHAR(8000);
 SET @WKT =
              STUFF(
                    (SELECT ',' 
                            + CAST( ROW_NUMBER() 
                                    OVER (ORDER BY [timestamp]) AS VARCHAR(100)) 
                            + ' ' + CAST( BackAngle AS VARCHAR(30) )
                     FROM ViewBodies
                     WHERE BackAngle IS NOT NULL
                     ORDER BY [timestamp]
                     FOR XML PATH('')), 1, 1, '');

SELECT geometry::STGeomFromText( 'LINESTRING(' + @WKT + ')', 0 );