問個SQL的查詢問題!

sousouwjh 2004-04-02 10:40:25

有兩個表
一個是:
zdh fkcode skje
1 RMB 200
20 RMB 1000
20 CN 200
20 XFZ 1200
23 RMB 100
24 xfz 100

另一個是
zdh card
1 333
20 444
23 555
24 666
如何用語句寫成:
zdh card RMB CN XFZ
1 333 200 0 0
20 444 1000 200 1200
23 555 100 0 0
24 666 0 0 100
注意 fkcode 是有多種類型,並不是隻有 RMB CN XFZ三種!
...全文
48 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
Qihua_wu 2004-04-02
  • 打赏
  • 举报
回复
一条SQL是不可能实现的。

你可以用存储过程通过动态创建表的来实现
Qihua_wu 2004-04-02
  • 打赏
  • 举报
回复
一条SQL是不可以实际的。

你可以用存储过程通过动态创建表的来实现
sousouwjh 2004-04-02
  • 打赏
  • 举报
回复
循環?請送佛送到西!
搞個循環例子來看看!
liushiboy 2004-04-02
  • 打赏
  • 举报
回复
select t.*,a.skje rmb,b.skje xfz,c.skje cn from
table2 t,
(selct sum(skje) skje,zdh from table1 where fkcode='rmb' group by zdh) a,
(selct sum(skje) skje,zdh from table1 where fkcode='xfz' group by zdh) b,
(selct sum(skje) skje,zdh from table1 where fkcode='cn' group by zdh) c
where t.zdh=a.zdh and t.zdh=b.zdh and t.zdh=c.zdh


没看到很有规律吗??
循环就行了撒
tonycjl 2004-04-02
  • 打赏
  • 举报
回复
都叫你用循环啦,你有没有看到的啊。请看清楚回覆。
:0 呢D人都费事采他。
sousouwjh 2004-04-02
  • 打赏
  • 举报
回复
如果隻有 RMB CN XFZ三種類型!就好辦多了!可是呀,會有很多種類型會隨時加進來,
不好搞呀!
jie115 2004-04-02
  • 打赏
  • 举报
回复
这个好像有点....

不懂啦,再看看。我觉得可能需要临时表。
liushiboy 2004-04-02
  • 打赏
  • 举报
回复
select t.*,a.skje rmb,b.skje xfz,c.skje cn from
table2 t,
(selct sum(skje) skje,zdh from table1 where fkcode='rmb' group by zdh) a,
(selct sum(skje) skje,zdh from table1 where fkcode='xfz' group by zdh) b,
(selct sum(skje) skje,zdh from table1 where fkcode='cn' group by zdh) c
where t.zdh=a.zdh and t.zdh=b.zdh and t.zdh=c.zdh
wfangqian 2004-04-02
  • 打赏
  • 举报
回复
关注
帮你顶,等高手来解决
tonycjl 2004-04-02
  • 打赏
  • 举报
回复
select Table2.Zdh,Table2.Card,
(select Table1.skje from Table1 where Table1.Zdh = Table2.Zdh and Table1.fkcode='RMB') as RMB,
(select Table1.skje from Table1 where Table1.Zdh = Table2.Zdh and Table1.fkcode='CN') as CN,
(select Table1.skje from Table1 where Table1.Zdh = Table2.Zdh and Table1.fkcode='XFZ') as XFZ
from table2

Result
Zdh Card RMB CN XFZ
----------- ----------- --------------------- --------------------- ---------------------
1 333 200.0000 NULL NULL
20 444 1000.0000 200.0000 1200.0000
23 555 100.0000 NULL NULL
24 666 NULL NULL 100.0000

但如果你的Fkcode是不定个数据的,可以用一个循环把“(select Table1.skje from Table1 where Table1.Zdh = Table2.Zdh and Table1.fkcode='CN') as CN,”把各种类型列出来。
sousouwjh 2004-04-02
  • 打赏
  • 举报
回复
to: xtascf(风中之峰)
呵呵,那有這樣簡單!看清楚我的要求!
xtascf 2004-04-02
  • 打赏
  • 举报
回复
select table1.zdh,table2.card,table1.rmb,table1.cn,table1.xfz
form table1,table2
where table1.zdh =table2.zdh
lihongling0994 2004-04-02
  • 打赏
  • 举报
回复
DISTINCT
ghtghtmalone 2004-04-02
  • 打赏
  • 举报
回复
行转列问题,用存储过程应该可以解决。
zyxg 2004-04-02
  • 打赏
  • 举报
回复
没见过,关注后面!
sincerity 2004-04-02
  • 打赏
  • 举报
回复
用存过创建临时表
chengjf1009 2004-04-02
  • 打赏
  • 举报
回复
mark
zhuangjunx 2004-04-02
  • 打赏
  • 举报
回复
关注
trial 2004-04-02
  • 打赏
  • 举报
回复
关注,有难度
sousouwjh 2004-04-02
  • 打赏
  • 举报
回复
to: agilecoder(原始森林)
呵呵,那有這樣簡單!看清楚我的要求!
加载更多回复(6)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧