select c.GO_Oper_NO as 操作卡号,count(a.Card_Type) as 临时卡A,sum(a.M_money) as 临时卡A收费,count(b.Card_Type) as 临时卡B,sum(b.M_money) as 临时卡B收费 from (select * from GoCar where Go_Date>='" & Format(DTPicker4.Value, "yyyy-MM-dd HH:mm:ss") & "'and Go_Date<'" & Format(DTPicker5.Value, "yyyy-MM-dd HH:mm:ss") & " ') as c, (select * from GoCar where Go_Date>='" & Format(DTPicker4.Value, "yyyy-MM-dd HH:mm:ss") & "'and Go_Date<'" & Format(DTPicker5.Value, "yyyy-MM-dd HH:mm:ss") & " 'and Card_Type='临时卡A' ) as a,(select * from GoCar where Go_Date>='" & Format(DTPicker4.Value, "yyyy-MM-dd HH:mm:ss") & "' and Go_Date<='" & Format(DTPicker5.Value, "yyyy-MM-dd HH:mm:ss") & "' and Card_Type='临时卡B') as b group by c.GO_Oper_NO order by c.GO_Oper_NO上面是我用VB编程时赋给ADODC的查询语句,然后在一个Datagride里显示,也可以得到结果,但是明显和表里的实际情况不符合,请哪位高手帮我看看是哪里有问题,谢谢!
加到50分了!
MAX(CASE Card_Type WHEN 'A' THEN Card_Type_NUM ELSE '0' END) AS A,
MAX(CASE Card_Type WHEN 'B' THEN Card_Type_NUM ELSE '0' END) AS B
FROM(
SELECT GO_Oper_NO,Card_Type,COUNT(Card_Type) AS Card_Type_NUM
FROM GoCar
WHERE Go_Date>='2009/01/01' AND Go_Date<'2009/10/10'
GROUP BY GO_Oper_NO,Card_Type
) B
GROUP BY GO_Oper_NO
不过看来简化的太多了,其实要求的还有两列,是把A,B两种类型的金额也统计一下,用到表里面的M_money字段,我学着你的方法试了一下,老是有语法错误,因为M_money在表里的类型是money型的,要涉及到类型转换的问题,沉默的羔羊再帮我看一下吧