日期:2014-05-16  浏览次数:20740 次

SQL,出数据问题,大侠们进来帮忙看一下。怎么出数据。
代码:
<%
sql="select BdName AS KK from QJDiaoBanBiao WHERE (Zb <> 0) AND (ZT = 0) AND (ZhangTai = 1) AND (ZT1 >= 1) group by BdName"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
%>
<table width="400" border="1">
  <tr>
    <td>姓名</td>
    <td>1月</td>
    <td>2月</td>
    <td>3月</td>
    <td>4月</td>
    <td>....12月</td>
    <td>....汇总</td>

  </tr>
<%
do while not rs.eof
%> 
  <tr>
    <td><font color="#990000" size="3"><strong><%=rs("KK")%></strong></font></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>

  </tr>
 <%
 do
rs.movenext
%> 
</table>

现在这样名字数据库里有有4个,但只能显示出一条,其他的1-12月的数据如何对应该名字来出数据。请大侠帮忙。
就是想达到如下效果
日期字段(DateTime1)    姓名(BDName)   进/出(Type1)   数量(QJTS)
2014-1-2 AAA 进 8
2014-1-10 AAA 出 5
2014-1-15 BBB 出 3
2014-1-18 CCC 进 6
… … … …
现在是想改成这种方式: 按姓字一样的统计,进-出并显示在对应的月份里。
姓名 1月 2月 …12月  汇总
AAA 3 … …       …
BBB -3 … …       …
CCC 6 … …       …


请帮忙,如何实现该效果。并给出代码,小弟初学。谢谢。。


------解决方案--------------------
只有12个月 那就不用动态行转列了。
直接

select
   bdname,
   sum(case when month(datetime1)=1 then Type1='进' then QJTS else 0 end) as '一月进',
   sum(case when month(datetime1)=1 then Type1='出' then QJTS else 0 end) as '一月出',
... --剩下11个月自己写
from
   tb
group by
   bdname

------解决方案--------------------
select
   bdname,
   sum(case when month(datetime1)=1 then Type1='进' then QJTS else 0 end) as '一月进',
   sum(case when month(datetime1)=1 then Type1='出' then QJTS else 0 end) as '一月出',
... --剩下11个月自己写
   ,sum(数量) as 汇总
from
   tb
group by
   bdname

------解决方案--------------------
引用:
select
   bdname,
   sum(case when month(datetime1)=1 then Type1='进' then QJTS else 0 end) as '一月进',
   sum(case when month(datetime1)=1 then Type1='出' then QJTS