Я получаю желаемый результат с помощью следующего кода. Мистер Эндрю Мортон помог мне в соединении строк. Но я чувствую, что мое решение немного длинное, особенно в начале. Любое предложение?
Dim SQLString1 As String = "Select STRING_AGG([VariationNo],',')Intcolumn from (select distinct variationNo from variation)tmp"
Dim cmd1 As New SqlCommand(SQLString1, con)
Dim adapter1 As New SqlDataAdapter(cmd1)
Dim table1 As New DataTable
adapter1.Fill(table1)
Dim tmplst As String = table1.Rows(0).Item("IntColumn").ToString
Dim clmName As String = "[" & tmplst.Replace(",", "],[") & "]"
Dim addvar As String = " as [Variation-" & tmplst.Replace(",", "]/ as [Variation-") & "]"
Dim tmpclmname As String = "IsNull(" & clmName.Replace(",", ",0)/IsNull(") & ",0)"
Dim joined = tmpclmname.Split({"/"c}).Zip(addvar.Split({"/"c}), Function(x, y) x & y).ToList()
Dim tmpclmname1 = String.Join(", ", joined)
Dim clmName1 As String = tmpclmname1.Replace("/", ",")
Dim SQLString As String = "Select JobNo," & clmName1 & "
from (Select JobNo,VariationNo,Amount from variation) as pivotdata
pivot
(
Max(Amount)
For VariationNo
In (" & clmName & ")
)AS Pivoting"
Dim cmd As New SqlCommand(SQLString, con)
Dim adapter As New SqlDataAdapter(cmd)
Dim table As New DataTable
adapter.Fill(table)
DataGridView1.DataSource = table