Board logo

标题: [数据库] 请帮我看看这交叉查询的SQL语句怎样写,我用的是Access数据库 [打印本页]

作者: twy1392336    时间: 2008-5-11 10:32     标题: 请帮我看看这交叉查询的SQL语句怎样写,我用的是Access数据库


有2个表:
       其中表A有一字段:单号
       表B有三这段:单号、项目号、项目金额


现需做一个交叉查询结果为:
    表A单号    项目号0    项目号1    项目号2    项目号3
00500001    4000
00500002    5546.18     978.77
00500003    19270      
00500004    170.25       30.55        284.65     35
00500005    550
00500006    83.54         15.67         33.7   


请教这SQL语句怎样写,我是用Access数据库


作者: Nothing    时间: 2008-5-11 11:44

select a.单号,b.项目号0, b.项目号1b.项目号2,b. 项目号3 from 表A a  left join 表B b on a.单号=b.单号
作者: twy1392336    时间: 2008-5-11 23:05

Nothing 我还是做不出来,我把需求重发给你,还把数据库也发给你,麻烦请你帮我做一下.

表 Invoice 有一字段:Invoice_No
表 Invoice_Dtl 有三字段:Invoice_No、Item_No、Item_Money现需做一个交叉查询结果为:
Invoice_No       0                  1                 2               3
00500001       4000
00500002       5546.18        978.77
00500003       19270      
00500004       170.25          30.55          284.65       35
00500005       550
00500006       83.54            15.67          33.7   
请教这SQL语句怎样写,我是用Access数据库

附件: Invoice.rar (2008-5-11 23:05, 311.81 KB) / 该附件被下载次数 436
http://bbs.lihuasoft.net/attachment.php?aid=1439
作者: Nothing    时间: 2008-5-12 10:37

原来是这样,这个你要的结果一条SQL语句是不可能实现的,你还是写程序处理吧。
可以使用两个recordset
作者: Richard    时间: 2008-11-13 20:25

你的要求是不是这样:将表A中每个单号在表B中每个项目的金额作为一列,如果这样可以试试下面的语句。
Select 单号 as 表A项目号,
isnull(Select 项目金额 from 表b as b where a.单号=b.单号 and b.项目号='1'),0) as 1,
isnull(Select 项目金额 from 表b as b where a.单号=b.单号 and b.项目号='2'),0) as 2,
isnull(Select 项目金额 from 表b as b where a.单号=b.单号 and b.项目号='3'),0) as 3
from 表A as a
group by 单号
Order By 单号




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0