我需要能够查询SharePoint数据库以获取调查结果。我遇到问题的数据类型是“评分刻度”值。因此,每个表列中的数据表示一整组子问题及其答案。
以下是一个列中包含的示例内容:
1. 我们的功能已经定义了如何测量生产中的硬件/软件可用性;#3#2. 在我们的功能中存在可用性阈值水平(例如,SLA);#3#3. 当有阈值违规时,我们的功能会遵循定义好的流程;#4#4. 我们的功能收集并维护可用性数据;#4#5. 比较分析有助于识别可用性数据的趋势;#4#6. 运营级别协议(OLA)指导我们与其他内部团队的互动;#4#
问题以分号结束,它们的答案在两个#符号内。因此,第一个问题的答案是3。
当我导出调查结果时,它将每个问题格式化为列标题,答案作为单元格下方的值,这样可以获得每个问题的平均值,并且希望能够从SQL查询中复制该值。
但如果我能够将查询结果放入两列(问题、答案)……我会非常高兴。
感谢您的帮助。
非常感谢
Hank Stallings
*****补充说明:
以下是一个列中包含的示例内容:
1. 我们的功能已经定义了如何测量生产中的硬件/软件可用性;#3#2. 在我们的功能中存在可用性阈值水平(例如,SLA);#3#3. 当有阈值违规时,我们的功能会遵循定义好的流程;#4#4. 我们的功能收集并维护可用性数据;#4#5. 比较分析有助于识别可用性数据的趋势;#4#6. 运营级别协议(OLA)指导我们与其他内部团队的互动;#4#
问题以分号结束,它们的答案在两个#符号内。因此,第一个问题的答案是3。
当我导出调查结果时,它将每个问题格式化为列标题,答案作为单元格下方的值,这样可以获得每个问题的平均值,并且希望能够从SQL查询中复制该值。
但如果我能够将查询结果放入两列(问题、答案)……我会非常高兴。
感谢您的帮助。
非常感谢
Hank Stallings
*****补充说明:
DECLARE @Table TABLE(
QuestionSource VARCHAR(50),
QA VARCHAR(5000)
)
DECLARE @ReturnTable TABLE(
QuestionSource VARCHAR(50),
Question VARCHAR(5000),
Answer int
)
DECLARE @XmlField XML,
@QuestionSource VARCHAR(50)
INSERT INTO @Table SELECT
'Availability' AS QuestionSource,CONVERT(varchar(5000),ntext1) FROM UserData WHERE tp_ContentType = 'My Survey'
INSERT INTO @Table SELECT
'Capacity' AS QuestionSource,CONVERT(varchar(5000),ntext2) FROM UserData WHERE tp_ContentType = 'My Survey'
--SELECT * FROM @Table
DECLARE Cur CURSOR FOR
SELECT QuestionSource,
CAST(Val AS XML) XmlVal
FROM (
SELECT QuestionSource,
LEFT(Vals, LEN(Vals) - LEN('<option><q>')) Val
FROM (
SELECT QuestionSource,
'<option><q>' + REPLACE(REPLACE(REPLACE(QA,'&','&'), ';#','</q><a>'), '#', '</a></option><option><q>') Vals
FROM @Table
) sub
) sub
OPEN Cur
FETCH NEXT FROM Cur INTO @QuestionSource,@XmlField
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @ReturnTable
SELECT @QuestionSource,
T.split.query('q').value('.', 'nvarchar(max)') question,
T.split.query('a').value('.', 'nvarchar(max)') answer
FROM @XmlField.nodes('/option') T(split)
FETCH NEXT FROM Cur INTO @QuestionSource,@XmlField
END
CLOSE Cur
DEALLOCATE Cur
SELECT * FROM @ReturnTable