以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  fill 加载表 两个字段的组合  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=48198)

--  作者:fubblyc
--  发布时间:2014/3/25 9:02:00
--  fill 加载表 两个字段的组合

各位老师早:

 

Dim sql,ex1,ex2,ex3,ex4 As String
ex1 = "Round(DateDiff( m,MAX(消费日期),GetDate()),0)"
ex2 = vbcrlf  & "(Case" & vbcrlf
ex2+ ="When " & ex1 & ">= 13  Then \'一星活跃\'"  & vbcrlf
ex2+ ="When " & ex1 & ">= 10 and " & ex1 & " < 13 Then \'二星活跃\'" & vbcrlf
ex2+ ="When " & ex1 & ">= 6 and " & ex1 & " < 10 Then \'三星活跃\'" & vbcrlf
ex2+ ="When " & ex1 & ">= 3 and " & ex1 & " < 6 Then \'四星活跃\'" & vbcrlf
ex2+ = "Else  \'五星活跃\'" & vbcrlf
ex2+ ="End) As 活跃级别  "

ex3 = "COUNT(DISTINCT 消费日期) "
ex4 = vbcrlf  & "(Case" & vbcrlf
ex4+ ="When " & ex3 & ">= 15  Then \'五星忠诚\'"  & vbcrlf
ex4+ ="When " & ex3 & ">= 10 and " & ex1 & " < 15 Then \'四星忠诚\'" & vbcrlf
ex4+ ="When " & ex3 & ">= 6 and " & ex1 & " < 10 Then \'三星忠诚\'" & vbcrlf
ex4+ ="When " & ex3 & ">= 3 and " & ex1 & " < 6 Then \'二星忠诚\'" & vbcrlf
ex4+ = "Else  \'一星忠诚\'" & vbcrlf
ex4+ ="End) As 忠诚级别  "

 

    sql = "select  * from (Select  {rjsytVIP基本信息}.归属门店代号 ,{rjsytVIP消费信息}.VIP卡号, " & ex2 & "  ,    " & ex4 & "    FROM "
    sql+ = "((rjsyt管理层名单 LEFT JOIN rjsytVIP基本信息 ON rjsytVIP基本信息.归属门店代号 = rjsyt管理层名单.归属门店代号) RIGHT JOIN rjsytVIP消费信息 ON 卡号 = {rjsytVIP消费信息}.VIP卡号 RIGHT JOIN rjsytVIP拓展信息 ON {rjsytVIP拓展信息}.VIP卡号 = {rjsytVIP消费信息}.VIP卡号 )  where {rjsytVIP消费信息}.[_Identify] Is Null   GROUP BY  {rjsytVIP消费信息}.VIP卡号, {rjsytVIP基本信息}.归属门店代号)  As a Where "  

  Tables("VIP行为信息_VIP行为信息").Fill(sql,"VIP数据", True)

 

 

我想增加一个列名为【顾客类别】,值是【活跃级别】与【忠诚级别】的组合,即:" & ex2 & "  与   " & ex4 & "的组合,我这样写:“" & ex2 & "  &  " & ex4 & "” AS 顾客类别     

 

没有实现。。。。不知道怎么写。。。

[此贴子已经被作者于2014-3-25 9:17:51编辑过]

--  作者:Bin
--  发布时间:2014/3/25 9:17:00
--  
你这样很难看出具体是什么效果.
1.自己利用messagebox.show弹出一下拼接的结果看看,或者把拼接的结果发出来
2.上例子.

--  作者:fubblyc
--  发布时间:2014/3/25 9:48:00
--  

哦哦,忘了。。拼接如下:

 

select  * from ({rjsytVIP基本信息}.归属门店代号 , {rjsytVIP消费信息}.VIP卡号, 

(Case

When Round(DateDiff( m,MAX(消费日期),GetDate()),0)>= 13  Then \'一星活跃\'

When Round(DateDiff( m,MAX(消费日期),GetDate()),0)>= 10 and Round(DateDiff( m,MAX(消费日期),GetDate()),0) < 13 Then \'二星活跃\'

When Round(DateDiff( m,MAX(消费日期),GetDate()),0)>= 6 and Round(DateDiff( m,MAX(消费日期),GetDate()),0) < 10 Then \'三星活跃\'

When Round(DateDiff( m,MAX(消费日期),GetDate()),0)>= 3 and Round(DateDiff( m,MAX(消费日期),GetDate()),0) < 6 Then \'四星活跃\'

Else  \'五星活跃\'

End) As 活跃级别 , 

(Case

When COUNT(DISTINCT 消费日期) >= 15  Then \'五星忠诚\'

When COUNT(DISTINCT 消费日期) >= 10 and Round(DateDiff( m,MAX(消费日期),GetDate()),0) < 15 Then \'四星忠诚\'

When COUNT(DISTINCT 消费日期) >= 6 and Round(DateDiff( m,MAX(消费日期),GetDate()),0) < 10 Then \'三星忠诚\'

When COUNT(DISTINCT 消费日期) >= 3 and Round(DateDiff( m,MAX(消费日期),GetDate()),0) < 6 Then \'二星忠诚\'

Else  \'一星忠诚\'

End) As 忠诚级别

FROM ((rjsyt管理层名单 LEFT JOIN rjsytVIP基本信息 ON rjsytVIP基本信息.归属门店代号 = rjsyt管理层名单.归属门店代号) RIGHT JOIN rjsytVIP消费信息 ON 卡号 = {rjsytVIP消费信息}.VIP卡号 RIGHT JOIN rjsytVIP拓展信息 ON {rjsytVIP拓展信息}.VIP卡号 = {rjsytVIP消费信息}.VIP卡号 )  where {rjsytVIP消费信息}.[_Identify] Is Null   GROUP BY  {rjsytVIP消费信息}.VIP卡号, {rjsytVIP基本信息}.归属门店代号)  As a Where

 

 

我自己写的:“" & ex2 & "  &  " & ex4 & "” AS 顾客类别 是不对的,一写上去,因为 “ " & ex2 & "  &  " & ex4 & " ” AS 顾客类别  应该是多了了这个“”

 

就提示说要以语句结束。

 

 

我想了解的是像类似这种 " & ex2 & " 与 " & ex4 & "  两个字段的值组合成一个新的字段的写法是什么样的。

 

比如:在 之前在 表属性的 datacolchanged  的代码格式是:

e.datarow("顾客类别")=e.datarow("活跃级别") & e.datarow("忠诚级别")

 

 

[此贴子已经被作者于2014-3-25 9:48:48编辑过]

--  作者:Bin
--  发布时间:2014/3/25 9:51:00
--  
就是 ex2 & ex4   另外你拼接的SQL语句一下子看上去也是正常的啊.
--  作者:fubblyc
--  发布时间:2014/3/25 10:07:00
--  

恩恩,Bin老师,我试了如下几种方式都不对:

 

ex2 & ex4   As 顾客类别

 

ex2 & ex4 "  As 顾客类别

 

" " & ex2 & "   &   " & ex4 & "  " As 顾客类别

 

" ' & ex2 & '   &   '& ex4 & ' " As 顾客类别

 

哎。。。

 


--  作者:Bin
--  发布时间:2014/3/25 10:10:00
--  
关键要看拼接出来的效果是怎么样才可以调整,才可以知道你想怎么样.你上例子吧.  或者把拼接出来的结果发出来
--  作者:fubblyc
--  发布时间:2014/3/25 10:12:00
--  

好,谢谢Bin老师,我上例子。


--  作者:fubblyc
--  发布时间:2014/3/25 10:45:00
--  

[此贴子已经被作者于2014-3-25 11:50:02编辑过]

--  作者:Bin
--  发布时间:2014/3/25 10:47:00
--  
你发的例子,并无报错啊.
--  作者:fubblyc
--  发布时间:2014/3/25 10:52:00
--  

我没加进去

加进去就乱了。。。