2016-07-06 62 views
0

我必須聲明我以前問過這個問題,但是我發現了一些導致誤導的措辭錯誤。因此,我決定刪除舊問題並再次提出問題。如何在不使用Select NULL的情況下跳過或忽略列?

這裏是我的SQL:

Select officer , NULL ,NULL, salary from table 

,因爲我用ADO運行在Excel中的SQL,第二和第三列是需要輸入數據運行SQL查詢之前。

但我使用NULL來跳過2列.SQL查詢將清除並重置我的數據或存儲在列2和3中的Excel公式,因爲我選擇NULL這2列。

因此,如何在不影響這兩列數據或公式的情況下跳過這兩列?

可視化:

  • 官,第2列,第3列,薪水

  • _,2,=總和(B2 * C2),_

SQL查詢運行:Select officer , NULL ,NULL, salary from table

  • 官,第2列(NULL),第3列(NULL),工資

  • 988,___,___,$ 4789// SQL查詢清除存儲在第2列中的原始數據3

(___表示空白)

如何解決這個問題?

+0

你爲什麼不跑從表ORDER兩個查詢像'選擇官BY xxx'和'選擇從表ORDER BY工資xxx',其中ORDER似乎需要確保您獲得匹配的數據集 –

+0

另一種方法是通過循環Recordset而不是'.CopyFromRecordset'來將數據加載到excel。 Loop將僅適用於第1,第4和第5場... –

+0

@ KazimierzJawor現在我已經建立了一個sql語句'mrs.Open sSQLSting,Conn sheet6.Range(「A5」)。CopyFromRecordset mrs'但是這個sql語句跨單元格,不需要放置 – Vito

回答

0

如果我正確理解你,你現在直接將查詢數據插入到工作表中?

如果是這樣,我建議使用記錄集來保存查詢結果。然後循環通過它。這樣您可以決定要在哪些單元格中放置數據。

一個出發點可能是這個(根據自己的需要修改):

Set cn = CreateObject("ADODB.Connection") 
With cn 
.Provider = "YOUR.PROVIDER" 
    .ConnectionString = "YOUR_CONNECTION_STRING" 
.Open 
End With 
strQuery = "SELECT officer, salary FROM table" 
Set rs = cn.Execute(strQuery) 
Do While Not rs.EOF 
    For i = 0 To rs.Fields.Count 

    ' Insert data to your worksheet here 
    ' rs.Fields(0).Value holds the value for officer 
    ' rs.Fields(1).Value holds the value for salary 

    Next 
    rs.MoveNext 
Loop 
rs.Close 
相關問題