Declare @Temp
Table(RowId Integer Identity(1,1), Attempt VarChar(50))
Insert Into @Temp(Attempt)
Select Convert(VarChar(1), N1) + Op1 + Convert(VarChar(1), N2) + Op2 + Convert(VarChar(1), N3) + Op3 + Convert(VarChar(1), N4)
From (
Select A.Number As N1,
B.Number As N2,
C.Number As N3,
D.Number As N4
From (Select 2 As Number Union All Select 3 Union All Select 4 Union All Select 5) A
Cross Join
(Select 2 As Number Union All Select 3 Union All Select 4 Union All Select 5) b
Cross Join
(Select 2 As Number Union All Select 3 Union All Select 4 Union All Select 5) c
Cross Join
(Select 2 As Number Union All Select 3 Union All Select 4 Union All Select 5) d
Where A.Number <> B.Number
And A.Number <> C.Number
And A.Number <> D.Number
And B.Number <> C.Number
And B.Number <> D.Number
And C.Number <> D.Number
) A
Cross Join
(
Select A.Operation As Op1,
B.Operation As Op2,
C.Operation As Op3
From (Select '+' As Operation Union All Select '-' Union All Select '*' Union All Select '/') A
Cross Join
(Select '+' As Operation Union All Select '-' Union All Select '*' Union All Select '/') b
Cross Join
(Select '+' As Operation Union All Select '-' Union All Select '*' Union All Select '/') c
) B
Declare @i Integer
Declare @Attempt VarChar(10)
Declare @Max Integer
Declare @SQL VarChar(1000)
Declare @Answer VarChar(100)
Select @i = 1,
@Max = Max(RowId)
From @Temp
Create Table #Temp(Answer Integer, Attempt VarChar(100))
While @i <= @Max
Begin
Select @Attempt = Attempt
From @Temp
Where RowId = @i
Set @SQL = 'Select ' + @Attempt + ' As Answer, ''' + @Attempt + ''' As Attempt'
Insert Into #Temp
Exec (@SQL)
Set @i = @i + 1
End
Select * From #Temp Where Answer = 28 Order By Answer
Drop Table #Temp