See if this sorts it
Option Explicit
Public cn As ADODB.Connection
Public CWrs As ADODB.Recordset
Public LWrs As ADODB.Recordset
Public CmdSQLData As ADODB.Command
Dim myStr As String
Sub Where_Else()
Const stSQL As String = _
"SELECT ron, store_name, spend,xrank " & _
"FROM ( " & _
"SELECT ron, store_name, spend, rank(spend) As xrank " & _
"FROM ( " & _
"SELECT bsk.Retail_Outlet_Number As ron, store_name,Sum(sales_value) As spend " & _
"FROM dxwi_prod_roi_view_access.VWI0BSK_TXN_BASKET_SALE bsk Inner Join dxwi_prod_roi_view_access.vwi0cal_small_calendar cal " & _
"ON cal.calendar_date = bsk.transaction_date " & _
"INNER JOIN dxwi_prod_roi_view_access.vwi0rot_retail_outlet rot " & _
"ON bsk.retail_outlet_number = rot.retail_outlet_number " & _
"WHERE household_number In " & _
"(sel household_number " & _
"FROM dxwi_prod_roi_view_access.VWI0BSK_TXN_BASKET_SALE bsk Inner Join dxwi_prod_roi_view_access.vwi0cal_small_calendar cal " & _
"ON cal.calendar_date = bsk.transaction_date " & _
"WHERE retail_outlet_number = " & "<store>" & _
"AND year_week_number Between 201001 AND 201026 GROUP BY 1) " & _
"AND year_week_number Between 201001 AND 201026 " & _
"AND country_code = 7 " & _
"AND bsk.retail_outlet_number <> " & "(<store>)" & _
"AND store_name Not Like '%pfs%' " & _
"GROUP BY 1,2) x " & _
")A " & _
"WHERE xrank BETWEEN 1 AND 5 "
Dim stSQL, retailDate2 As String
Dim Store, Store2 As String
Dim cell As Range
Dim i, j As Integer
Dim readColumn As Long
Dim NextRow As Long
Sheet1.Activate
Sheet1.Range("A3").Select
Set cn = New ADODB.Connection
Set CWrs = New ADODB.Recordset
Set CmdSQLData = New ADODB.Command
cn.Open "DSN=DW MASTER; Driver=Teradata; Server = tdpm; Database=DXWI_PROD_ROI_VIEW_ACCESS; UID=roi_general; PWD=roi; OPTION=3"
Set CmdSQLData.ActiveConnection = cn
For Each cell In Range(Range("A3"), Range("A3").End(xlDown))
Store = cell.Value ' Store Number
Store2 = "(" & Store & ")"
CmdSQLData.CommandText = Replace(stSQL, "<store>", Store)
CmdSQLData.CommandType = adCmdText
CmdSQLData.CommandTimeout = 0
Set rs = CmdSQLData.Execute()
Set rs = CmdSQLData.Execute()
With Sheet2
.Activate
If .Range("A1").Value = "" Then
NextRow = 1
Else
NextRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End If
For c = 0 To rs.Fields.Count - 1
.Cells(1, c + 1) = rs.Fields(c).Name
Next c
r = NextRow + 1
Do While Not rs.EOF
For c = 0 To rs.Fields.Count - 1
.Cells(r, c + 1) = rs.Fields(c).Value
Next c
r = r + 1
rs.MoveNext
Loop
End With
Next cell
' End If
cn.Close
End Sub