㊣㊣㊣㊣㊣㊣这样的查询如何实现数据库问题,兄弟们帮我一吧㊣㊣㊣㊣㊣。
一、开发环境
数据库:sql server2000
开发工具:delphi
结构:三层
二、问题描述
| 动态项目一 | 动态项目二 | 动态项目n |
| 当天 |累计 | 当天 |累计 | 当天 |累计 |
|进|销|存|分|进|销|分 |进|销|存|分|进|销|分 |进|销|存|分|进|销|分 |
要求:传入当前时间,计算出如上数据
一、开发环境
数据库:sql server2000
开发工具:delphi
结构:三层
二、问题描述
| 动态项目一 | 动态项目二 | 动态项目n |
| 当天 |累计 | 当天 |累计 | 当天 |累计 |
|进|销|存|分|进|销|分 |进|销|存|分|进|销|分 |进|销|存|分|进|销|分 |
要求:传入当前时间,计算出如上数据
解决方案 »
- GDI+中TGPGraphics的create问题
- TXT文本怎么删除行~帮我看看吧
- 送分了!!!多线程程序中,为什么会出现线程乱串的问题.高手们解决!!!
- 用过VB的Delphi高手,请帮我解决一个VB代码转Delphi的难题!
- 新手问个问题
- 100分求Treeview和数据库的结合。可加到500分
- delphi dbgrid按条件求和有一个问题
- 动态创建的菜单,如何判断 点击的是哪个条目
- 分发系统的时候,每次都要设置DSN,真麻烦,能在程序里面实现吗?
- delphi5中,怎么实现按钮上字体的垂直分布,谢谢.
- 如何直接在query组件中使用动态变量?
- 我是程序精品室版主,我们正在组建团队开发训练和实例开发,欢迎大家参与.
http://expert.csdn.net/Expert/topic/2455/2455774.xml?temp=.1538813
Create table test (name char(10),km char(10),cj int)
go
insert test values('张三','语文',80)
insert test values('张三','数学',86)
insert test values('张三','英语',75)
insert test values('李四','语文',78)
insert test values('李四','数学',85)
insert test values('李四','英语',78)
想得到:
姓名 语文 数学 英语
张三 80 86 75
李四 78 85 78declare @sql varchar(8000)
set @sql = 'select name'
select @sql = @sql + ',sum(case km when '''+km+''' then cj end) ['+km+']'
from (select distinct km from test) as a
select @sql = @sql+' from test group by name'
exec(@sql)
2、以xml方式返回数据,客户端只显示(格式是你定义的,哪怕其它项目调用也横方便)
个人意见
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=170924
问题是:
1.数据表动态列实现
2.生成用户要的数据格式,如题
3.速度不能太慢,<5s
我不要语句,有思路就好
2、得到数据格式我不明白那里难?
[交流]行列转换
客户A 进 销 存 分
产品大类(比如是A8)
产品小类(比如是A8白)
产品小类(比如是A8金)
产品大类 (比如A9)
产品小类
......
客户B 进 销 存 分
产品大类(比如是A8)
产品小类(比如是A8白)
产品小类(比如是A8金)
产品大类 (比如A9)
产品小类
......
客户不满意,非要这样统计
A8 | A9
当天 | 累计 | 当天 | 累计
客户名称 |进 销 存 分| 进 销 分 |进 销 存 分| 进 销 分
我现在主要从两个表中数据:
1.Stock_items:库存表
2.Stock_Operation:库操做表产品大类是用户定义的,是不固定的,产品小类是财务科目,客户对大类小类都要查询,不过这个统计不关心小类。
order by ...分类累计要用到这个语句...,比如按照项目来分类,分类计算每个项目的价格总和
不过那样写出来的SQL代码真的很看不清。
而且很不通用!!!我曾经也在MSSQL版发过类似的贴子,
只是至今无人帮我解决罢了。
贴子是http://expert.csdn.net/Expert/topic/2146/2146114.xml?temp=.2678491
可以去看看他们的答案!!!!象这样的动态列的情况下的SQL确实不容易写,
过几天我发一个解决方案吧。
是用DELPHI和MSSQL代码来实现的。
只需要写少量的SQL代码再加上一个类就可以处理了。
现在我在网吧上网,
不能上传源代码,
过几天我传上来了后通知你吧。
--------------------------------------------------------------------
看尽悲伤,庸人自扰不平事。叹尽荒凉,海阔天空谁人知。狂风劲兮,百花飘
扬乱舞香。捏花一笑,海不扬波断肠心!
广告:http://delphicode.yeah.net
一季度 二季度 三季度
名称:数量 单价 金额 数量 单价 金额 数量 单价 金额
项目1 .... ... ... .....而且一极表头(季度或月份列)和二级表头(数量或金额)都不是固定的,可以根据需要动态调节的,如果你的是固定的那么应该好办得多,下面是我用来组织数据的sql,仅供参考INSERT INTO TABLE1(列1,列2,.....)
SELECT ZWSJ_XMBH,
J1JE=SUM(CASE ZWSJ_YSQJ WHEN 'J1' THEN ZWSJ_YSJE ELSE 0 END ),
J2JE=SUM(CASE ZWSJ_YSQJ WHEN 'J2' THEN ZWSJ_YSJE ELSE 0 END ),
J3JE=SUM(CASE ZWSJ_YSQJ WHEN 'J3' THEN ZWSJ_YSJE ELSE 0 END ),
J4JE=SUM(CASE ZWSJ_YSQJ WHEN 'J4' THEN ZWSJ_YSJE ELSE 0 END ),
J1SL=SUM(CASE ZWSJ_YSQJ WHEN 'J1' THEN ZWSJ_YSSL ELSE 0 END ),
J2SL=SUM(CASE ZWSJ_YSQJ WHEN 'J2' THEN ZWSJ_YSSL ELSE 0 END ),
J3SL=SUM(CASE ZWSJ_YSQJ WHEN 'J3' THEN ZWSJ_YSSL ELSE 0 END ),
J4SL=SUM(CASE ZWSJ_YSQJ WHEN 'J4' THEN ZWSJ_YSDJ ELSE 0 END ),
J1DJ=SUM(CASE ZWSJ_YSQJ WHEN 'J1' THEN ZWSJ_YSDJ ELSE 0 END ),
J2DJ=SUM(CASE ZWSJ_YSQJ WHEN 'J2' THEN ZWSJ_YSDJ ELSE 0 END ),
J3DJ=SUM(CASE ZWSJ_YSQJ WHEN 'J3' THEN ZWSJ_YSDJ ELSE 0 END ),
J4DJ=SUM(CASE ZWSJ_YSQJ WHEN 'J4' THEN ZWSJ_YSDJ ELSE 0 END )
FROM ZWSJ
WHERE ZWSJ_YEAR='2004'
GROUP BY ZWSJ_XMBHJ1代表在数据库中是第一季度的数据。
在20万的数据量中,执行速度很快<1s
一季度 二季度 三季度
名称:数量 单价 金额 数量 单价 金额 数量 单价 金额
项目1 .... ... ... .....而且一极表头(季度或月份列)和二级表头(数量或金额)都不是固定的,可以根据需要动态调节的,如果你的是固定的那么应该好办得多,下面是我用来组织数据的sql,仅供参考INSERT INTO TABLE1(列1,列2,.....)
SELECT ZWSJ_XMBH,
J1JE=SUM(CASE ZWSJ_YSQJ WHEN 'J1' THEN ZWSJ_YSJE ELSE 0 END ),
J2JE=SUM(CASE ZWSJ_YSQJ WHEN 'J2' THEN ZWSJ_YSJE ELSE 0 END ),
J3JE=SUM(CASE ZWSJ_YSQJ WHEN 'J3' THEN ZWSJ_YSJE ELSE 0 END ),
J4JE=SUM(CASE ZWSJ_YSQJ WHEN 'J4' THEN ZWSJ_YSJE ELSE 0 END ),
J1SL=SUM(CASE ZWSJ_YSQJ WHEN 'J1' THEN ZWSJ_YSSL ELSE 0 END ),
J2SL=SUM(CASE ZWSJ_YSQJ WHEN 'J2' THEN ZWSJ_YSSL ELSE 0 END ),
J3SL=SUM(CASE ZWSJ_YSQJ WHEN 'J3' THEN ZWSJ_YSSL ELSE 0 END ),
J4SL=SUM(CASE ZWSJ_YSQJ WHEN 'J4' THEN ZWSJ_YSDJ ELSE 0 END ),
J1DJ=SUM(CASE ZWSJ_YSQJ WHEN 'J1' THEN ZWSJ_YSDJ ELSE 0 END ),
J2DJ=SUM(CASE ZWSJ_YSQJ WHEN 'J2' THEN ZWSJ_YSDJ ELSE 0 END ),
J3DJ=SUM(CASE ZWSJ_YSQJ WHEN 'J3' THEN ZWSJ_YSDJ ELSE 0 END ),
J4DJ=SUM(CASE ZWSJ_YSQJ WHEN 'J4' THEN ZWSJ_YSDJ ELSE 0 END )
FROM ZWSJ
WHERE ZWSJ_YEAR='2004'
GROUP BY ZWSJ_XMBHJ1代表在数据库中是第一季度的数据。
在20万的数据量中,执行速度很快<1s
nhdj(用潘婷的和尚)的方法不错
以前也做过类似的东西
不过如果对数据库采用完全面向对象方法
可以很好解决这类问题
--------------------------------------------------------------------
看尽悲伤,庸人自扰不平事。叹尽荒凉,海阔天空谁人知。狂风劲兮,百花飘
扬乱舞香。捏花一笑,海不扬波断肠心!
http://delphicode.yeah.net