请注意,这是针对SQL Server 2014的,因此无法使用各种内置函数,并且我没有创建函数的权限。
我的数据如下:
advisor_rep_id individual_url_rep_codes split_url_rep_codes
57444 9289 9569
4407 397 7128, 9226
52779 8613, 8614, 8616 (null)
56732 (null) 9193, 4423
56713 3456 9193, 4423
我正在尝试将individual_url_rep_codes
和split_url rep_codes
的每个变体转换为一列(许多行)urls
。请注意,每个individual_url_rep_codes
的{{1}}和split_url rep_codes
实例都可能超过5个。
预期输出:
advisor_rep_id
在下面的尝试中,我使用advisor_rep_id urls
57444 9289
57444 9569
4407 397
4407 7128
4407 9226
52779 8613
52779 8614
52779 8616
56732 9193
56732 4423
56713 3456
56713 9193
56713 4423
中的第一个变量,然后使用individual_url_rep_codes
中的第二个变量,然后使用{{1}中的第一个变量,使用union
},然后在individual_url_rep_codes
中使用union
中的第二个变量,我将继续合并以覆盖字符串中所有用逗号分隔的变量。
必须有另一种方式!有任何想法吗? 仅供参考,我知道我在输出中得到了一堆空值,这将需要摆脱子查询。
split_url_rep_codes
答案 0 :(得分:4)
这是一个简单的XML解析,略有不同……我们只是将两个rep_code列连接起来。
示例
NamedObject
返回
Private Sub fillsubjectcombo()
If yearlabel.Text = "Grade 11" Or course_label.Text = "STEM" Then
'use and instead of or if both condiions must be true
If semester_label.Text = "Second semester" Then
Dim str As String
con.Close()
con.Open()
str = "SELECT* FROM [Subjects] ORDER BY [STEM G11 SS]"
cmd = New SqlClient.SqlCommand(str, con)
cmd.CommandText = str
cmd.Connection = con
drd = cmd.ExecuteReader
subject_cbx.Items.Clear()
While (drd.Read())
subject_cbx.Items.Add(drd("STEM G11 SS"))
End While
cmd.Dispose()
drd.Close()
con.Close()
ElseIf semester_label.Text = "First semester" Then
Dim sti As String
con.Close()
con.Open()
sti = "SELECT* FROM [Subjects] ORDER BY [STEM G11 FS]"
cmd = New SqlClient.SqlCommand(sti, con)
cmd.CommandText = sti
cmd.Connection = con
drd = cmd.ExecuteReader
subject_cbx.Items.Clear()
While (drd.Read())
subject_cbx.Items.Add(drd("STEM G11 FS"))
End While
cmd.Dispose()
drd.Close()
con.Close()
End If
End If
End Sub