查看單個文章
舊 2018-08-20, 02:41 PM   #1
飛行船大大
註冊會員
 
飛行船大大 的頭像
榮譽勳章
UID - 282126
在線等級: 級別:12 | 在線時長:220小時 | 升級還需:1小時級別:12 | 在線時長:220小時 | 升級還需:1小時
註冊日期: 2007-10-09
文章: 142
精華: 0
現金: 259 金幣
資產: 7259 金幣
Question 請問1個VB6+ACCESS SQL 的一個簡易問題

我的問題是: 有1個資料表 [專門匯入1分線] 如下:
(通常每個DATE 會有300行 的1分線; 但是我發覺資料表的總筆數 不是300的整數倍: 所以必須找出到底是那1個交易日缺少筆數???)這次資料表 總共有1,303,035筆

Date,Time,Open,High,Low,Close,Volume
2001/01/02,08:46:00,4702,4719,4700,4710,67
2001/01/02,08:47:00,4703,4729,4703,4729,30
2001/01/02,08:48:00,4723,4744,4723,4738,24
2001/01/02,08:49:00,4730,4740,4730,4737,25
2001/01/02,08:50:00,4735,4735,4730,4730,21
2001/01/02,08:51:00,4729,4732,4729,4732,20
2001/01/02,08:52:00,4732,4738,4732,4738,23
2001/01/02,08:53:00,4738,4740,4737,4740,11
2001/01/02,08:54:00,4738,4740,4735,4735,26
2001/01/02,08:55:00,4729,4737,4726,4737,29
2001/01/02,08:56:00,4730,4730,4724,4724,17
2001/01/02,08:57:00,4721,4730,4720,4722,34
2001/01/02,08:58:00,4728,4730,4728,4728,9
2001/01/02,08:59:00,4729,4729,4723,4725,10
2001/01/02,09:00:00,4730,4730,4725,4725,18
2001/01/02,09:01:00,4731,4738,4730,4738,22
2001/01/02,09:02:00,4740,4755,4740,4755,39
2001/01/02,09:03:00,4761,4795,4760,4790,81
2001/01/02,09:04:00,4779,4789,4779,4785,56
...
...
2018/08/07,13:45:00,10969,10969,10967,10968,702



我的問題是: 我是用VB6寫成以下指令,但是會當在 下方紅色的那一行-- 因為 Count(日期) 根本不是欄位名稱!
請問: 我應該何列印出結果!

Dim RS As ADODB.Recordset
Set RS = New ADODB.Recordset
With RS
If .State = adStateOpen Then RS.Close
    .ActiveConnection = CN1
    .LockType = adLockOptimistic
   .CursorType = adOpenKeyset
   .Source = "SELECT 日期 ,COUNT(日期) from [專門匯入1分線] GROUP BY 日期 ORDER BY 日期 "
   .Open
End With

Dim m_num As Integer
m_num = FreeFile
Open App.Path & "\[專門匯入1分線]_各日期的筆數.TXT" For Output As #m_num
If RS.RecordCount > 0 Then
  RS.MoveFirst
  Do While Not RS.EOF
   Print #m_num, RS("日期"), Count(日期) '<==

  RS.MoveNext
 Loop
End If
Close #m_num


-------
在多年前 就知道這個5個函數 會有問題~所以我一直都是用 傳統的逐筆算
這次 總共有1,303,035筆 , 想了解
如何要列印出 每個交易日各自有幾筆 我只需要列出 2個欄位如下:
Date , 筆數
------------- --------
2001/01/02, 300
2001/01/03, 300
2001/01/04, ....
....
....
2018/08/07, ....


AVG (平均)
COUNT (計數)
MAX (最大值)
MIN (最小值)
SUM (總合)





--下方是截錄網路上的 SQL語法:----------------------
在上一頁有提到, COUNT 是函數之一。由於它的使用廣泛, 我們在這裡特別提出來討論。基本上, COUNT 讓我們能夠數出在 表格中有多少筆資料被選出來。它的語法是:

SELECT COUNT("欄位名")
FROM "表格名"

舉例來說,若我們要找出我們的範例表格中有幾筆 store_name 欄不是空白的資料時,

Store_Information 表格

store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999

我們就鍵入,

SELECT COUNT(store_name)
FROM Store_Information
WHERE store_name is not NULL

結果:

Count(store_name)
4

"is not NULL" 是 "這個欄位不是空白" 的意思。
-------
COUNT 和 DISTINCT 經常被合起來使用,目的是找出表格中有多少筆不同的資料 (至於這些資料實際上是什麼並不重要)。 舉例來說,如果我們要找出我們的表格中有多少個不同的 store_name,我們就鍵入,

SELECT COUNT(DISTINCT store_name)
FROM Store_Information

結果:

Count(DISTINCT store_name)
3
------------------------------------------------------

此帖於 2018-08-20 03:41 PM 被 飛行船大大 編輯.
飛行船大大 目前離線  
送花文章: 160, 收花文章: 54 篇, 收花: 131 次
回覆時引用此帖