【发布时间】:2014-03-12 17:15:47
【问题描述】:
我有这个用 T-SQL 编写的怪物查询,它汇集并处理来自多个表的数据。我可以很容易地将结果导出到 CSV 或 Excel,但想将其直接发送到 SPSS。 SPSS 中的 ODBC 驱动程序仅识别我的 SQL 数据库中的表和视图。任何想法如何将我的查询结果输入 SPSS?
选项:
- 导出到 Excel 然后导入到 SPSS...格式化日期等内容变得难以处理
- 将查询另存为我的数据库中的表...但是每次运行查询时我都必须创建一个新表,是吗?
- 按照下面的建议,只需在我的 SPSS 语法的
GET DATA语句中运行我的 SQL 语句,但我正在为此苦苦挣扎......
更新:在尝试使用 SPSS 运行我的 SQL 查询时,我编辑了此代码并收到此错误,表明 SPSS 不喜欢我的 nvarchar 声明(目前正在研究如何使用替代方法处理此问题)。我已经测试了我在 SPSS 和 SQL 之间的连接,并且连接良好:
SQLExecDirect failed :[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'N'.
这是我的简化查询,仅从一张表中提取一个字段:
GET DATA
/TYPE=ODBC
/CONNECT='DSN=temp_Hisp;Description=tempHisp;UID=;Trusted_Connection=Yes;APP=IBM SPSS '+
'Products: Statistics Common;WSID=ARCH5-50;DATABASE=temp_HispTreat'
/SQL='With CTE_BASENG As (Select StudyID, Visit, Question, CAST(Response As Int) As RESPONSE from temp_HispTreat.dbo.BAS AS PVTable outer apply (values (N'BAS1',BAS1), +'
'(N'BAS24',BAS24)) P(Question, Response)) select SubVis.IRB#, SubVis.StudyID, SubVis.Clin_num, Subvis.Visit, BASENG.BAS_ENGTOT From (Select Distinct IRB#, StudyID, +'
'Clin_Num, Visit_ID As Visit from temp_HispTreat.dbo.Subjects, temp_HispTreat.dbo.StudyStructure where subjects.IRB# = 5516 and StudyStructure.IRB = 5516) As SubVis left join (Select StudyID, +'
'Visit, SUM (Scoring.dbo.GetValue9(response)) As BAS_ENGTOT from CTE_BASENG group by StudyID, Visit) AS BASENG On SubVis.Studyid = BASENG.StudyID And SubVis.Visit = BASENG.Visit'
/ASSUMEDSTRWIDTH=255.
CACHE.
EXECUTE.
谢谢大家:已解决。让 SPSS 运行 SQL 查询需要进行相当多的调整,但这是将 SQL 数据导出到 SPSS 的最佳方式。在我的情况下,(values (N'BAS1',BAS1) 必须更改为(values ("BAS1",BAS1),但我的所有命令,例如outer apply、union 等,跑得像冠军!感谢您的帮助。
【问题讨论】:
标签: sql sql-server tsql spss