| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2453 人关注过本帖, 2 人收藏
标题:这样的表能够通过select语句实现吗
取消只看楼主 加入收藏
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
结帖率:99.55%
收藏(2)
已结贴  问题点数:100 回复次数:8 
这样的表能够通过select语句实现吗
源表1
日期     凭证编号  借方金额   贷方金额  部门编号
2009-9-2     1      1500            0      1
2009-9-2     2      1800            0      3
2009-9-12    3        0           500      2
2009-9-15    4      1200            0      2


源表2
部门编号   部门名称
1          行政部
2          财务部
3          储运部
4          销售部
5          采购部


目标表
日期     凭证编号  借方金额   贷方金额    余额     行政部    财务部     储运部    销售部     采购部
2009-9-2    1        1500          0      1500      1500
2009-9-2    2        1800          0      3300                           1800
2009-9-12   3                    500      2800                -500
2009-9-15   4        1200          0      4000                1200

如果源表2的记录数是固定的可能还好处理,如果源表2的记录是可以由用户随时添加的又该如何处理?

搜索更多相关主题的帖子: 语句 select 
2009-11-15 16:57
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
首先要感谢楼上的解答!
我在VFP下测试,语句如下:
select * from 源表1 LEFT JOIN 源表2 ON 源表1.部门编号=源表2.部门编号
得到的结果如下:
日期     凭证编号  部门编号_a  借方金额   贷方金额   部门编号_b    部门名称
2009-9-2    1        1          1500          0         1           行政部
2009-9-2    2        3          1800          0         3           储运部
2009-9-12   3        2                       500        2           财务部
2009-9-15   4        2          1200          0         2           财务部

没有达到我需要的结果。

我现在采用笨办法,建立一个自由表,然后通过编程计算出相应的数据并添加到表中。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2009-11-16 16:04
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
以下是引用baichuan在2009-11-17 12:02:17的发言:

这个胡九九啊!

这也能实现?可能么?等于是把表内容添加到表项中去!
要实现起来是有难度。由于我对selec语句不熟悉,我看到很多使用select语句解决复杂问题的实例,以前需要用一大堆代码解决的问题,很多只要一条select语句就实现了,所以我才将这个问题提出来,集思广益,看有没有解决的途径。
我用代码解决的过程是:先建立一个结构表,将所需要的项目添加到这个表中,然后用这个表来建立一个目标表,再将数据分别“装”入目标表中,最后再逐行计算出余额。我的这个方法是最原始的,肯定有可以改进的地方。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2009-11-18 08:09
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
感谢楼上的热心!因为这几天比较忙,您的代码我还在分析,尚未进行测试,请稍候!

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2009-11-18 11:45
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
经过测试,6楼的代码基本上可以达到要求,尽管还缺“余额”列,但已经很不容易了。测试的结果如下:

日期     凭证编号  借方金额   贷方金额   部门编号    行政部    储运部     财务部
2009-9-2    1       1500          0         1         1500
2009-9-2    2       1800          0         3                   1800
2009-9-12   3                    500        2                              -500
2009-9-15   4       1200          0         2                              1200

说来也很惭愧,我还没有弄明白6楼的代码,还在继续分析、学习中。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2009-11-18 16:55
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
CLOSE ALL
CLEAR

USE TBL1 IN 0
USE TBL2 IN 1

SQL_STR=''
CSTR=''

SELECT A.*,B.BMMC FROM TBL1 A LEFT JOIN TBL2 B ON A.BMBH=B.BMBH INTO CURSOR CUR_TMP

SQL_STR=[SELECT RQ,PZBH,JFJE,DFJE,BMBH]

SELECT [,IIF(BMMC=']+BMMC+[',JFJE-DFJE,00000)]+[ ]+BMMC AS STR_C FROM TBL2 INTO CURSOR TMP

FOR I = 1 TO RECCOUNT()-1
    GO I
    CSTR=CSTR+ALLTRIM(STR_C)
ENDFOR
*?CSTR

SQL_STR=SQL_STR+CSTR+' FROM CUR_TMP M'
*?SQL_STR
EXECSCRIPT(SQL_STR)

经过反复测试,6楼的代码在最后的循环中多了一次,目标表多出了一列空列,要改成上面(红字是改动部份)才行。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2009-11-22 16:33
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
以下是引用茵梦湖在2009-11-23 02:26:12的发言:

6楼的代码是对的,12楼的红字部分(-1)反而是改错了~~~附测试图~
 
 
 
6楼的代码的确是对的。是我测试用的部门表中多了一条空记录,所以加-1才正常输出。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2009-11-29 18:24
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
以下是引用TZTJ在2009-11-22 22:15:40的发言:

请问版主,"SQL_STR=[SELECT RQ,PZBH,JFJE,DFJE,BMBH]"这行代码有何作用呢?本人很少见过这种用法,你能解释一下吗?
这是组成select语句的字符串,在此处方括号的作用与引号相同。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2009-11-29 18:26
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
回复 15楼 hqc_hcy
解决的方法肯定有多种,用视图也许可以解决问题,但我还中觉得用select语句更好些。
我现在需要表中数据时习惯用select语句按需要提取出来,一般不直接对表进行操作。这样程序更容易移植到多用户状态。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2009-11-29 18:31
快速回复:这样的表能够通过select语句实现吗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028075 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved