2012-11-05 31 views
0

我想通过连接到MYSQL数据库的VBA在Excel中获取表。我的查询有效,但我想修改结果中的某些内容。现在,我得到根据时间变量j购买每列1,2,3 ......的用户数量。但是,对于j的各种值,没有购买3次或更多的用户。我想添加一个函数,可以这样说:如果购买数量等于3,4,5不超过10,则将值= 0添加到该值。如果值不存在于Excel中的VBA结果表中的值添加值

例如:对于j = 10 I得到:

NB 1:31 NB 3:10

我想获得

NB 1:31 NB 2:0 NB 3:10 nb的4:0 ......... NB 10:0

这是我的代码:

For j = 1 To 30 

    strSql = "SELECT COUNT(nb_purchases), nb_purchases from users" & _ 
    "WHERE DATEDIFF(date_added , register_date) >=" & j & " " & _ 
    "GROUP BY nb_purchases" & _ 
    "ORDER BY nb_purchases ASC ; " 

    For i = 1 To 2 
    Cells(i, j) = res(0, i) 
    Next i 
    Next j 

回答

0

您可能需要使用case-when-then在你的MySQL查询为:

strSql = "SELECT COUNT(nb_purchases) as CountUsers,"+ 
     " (CASE WHEN (CountUsers > 2 & CountUsers <11) "+ 
       " THEN 0 ELSE CountUsers END) AS COUNTTOUSE, " + 
     "nb_purchases from users" & _ 
     "WHERE DATEDIFF(date_added , register_date) >=" & j & " " & _ 
     "GROUP BY nb_purchases" & _ 
     "ORDER BY nb_purchases ASC ; 

使用COUNTTOUSE从结果在Excel中写。

相关问题