Если выходные данные так сильно отличаются от схемы, возникает вопрос, правильно ли схема моделирует бизнес-требования.Тем не менее, я бы порекомендовал просто написать SQL.Вы можете упростить SQL следующим образом:
Select Company
, Option1, Option2, Option3
, Case When T2.Variable = 1 Then 'Y' Else 'N' End As CustomCol1
, Case When T2.Variable = 2 Then 'Y' Else 'N' End As CustomCol2
, Case When T2.Variable = 3 Then 'Y' Else 'N' End As CustomCol3
, Case When T2.Variable = 4 Then 'Y' Else 'N' End As CustomCol4
...
From Table1 As T1
Left Join Table2 As T2
On T2.ID2 = T1.ID
And T2.Bit = 1
Where T1.OtherCondition = 'True'
Group By T1.Company
Order By T1.Company
Если вы хотите написать что-то, что может помочь вам автоматически генерировать эти операторы Case (и вы используете SQL Server 2005+), вы можете сделать что-то вроде:
With Numbers As
(
Select 0 As Value
Union All
Select Value + 1
From Numbers
Where Value < 41
)
Select ', Case When T2.Variable = ' + Cast(N.Value As varchar(10)) + ' Then ''Y'' Else ''N'' End As CustomCol' + Cast(N.Value As varchar(10))
From Numbers As N
Вы должны выполнить запрос, скопировать и вставить результаты в свою процедуру или код.