求一简单SQL语句 ( 积分: 50 )

  • 主题发起人 主题发起人 siking
  • 开始时间 开始时间
S

siking

Unregistered / Unconfirmed
GUEST, unregistred user!
有两张表'币别','收款记录'<br>'币别'表结构&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'收款记录'表结构<br>code&nbsp;cname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;&nbsp;&nbsp;code&nbsp;&nbsp;RecMoney&nbsp;<br>RMB&nbsp;人民币&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RMB&nbsp;&nbsp;&nbsp;&nbsp;50000<br>HK&nbsp;&nbsp;港币&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RMB&nbsp;&nbsp;&nbsp;&nbsp;500<br>US&nbsp;&nbsp;美元&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6000&nbsp;&nbsp;<br>..&nbsp;&nbsp;..&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;..&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br>求&nbsp;‘收款记录’表里&nbsp;各种比别的总额<br>人民币&nbsp;&nbsp;&nbsp;港币&nbsp;&nbsp;&nbsp;美元&nbsp;&nbsp;......<br>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;......<br>以后币别有增加,该语句无需更改
 
主要是交叉视图!我想可以<br>1、select&nbsp;code,sum(recmoney)&nbsp;from&nbsp;收款记录&nbsp;group&nbsp;by&nbsp;code<br>2、游标来把行变成列写到临时表<br>3、select&nbsp;临时表
 
我是想把'币别'表里cname字段的值,横放<br>像<br>人民币&nbsp;&nbsp;港币&nbsp;美元&nbsp;。。。。。。。。
 
1。用STRINGGRID,然后把select&nbsp;code,sum(recmoney)&nbsp;from&nbsp;收款记录&nbsp;group&nbsp;by&nbsp;code<br>的中值一个一个给它<br>2。用临时表和DBGRID,然后把select&nbsp;code,sum(recmoney)&nbsp;from&nbsp;收款记录&nbsp;group&nbsp;by&nbsp;code<br>的中值一个一个给临时表
 
那就不能光用sql,还得加上专业语言,<br>定义两个数组,一个放币别,一个放钱,<br>1.首先把币币别查出来,把它放到数组一中<br>2,create&nbsp;table&nbsp;创建这个币别表,<br>3.从收款记录表中,查出每种币别,对就放到数组二中<br>4.用insert&nbsp;into&nbsp;追加到2步中创建表中
 
币别是固定记录的吗?
 
做成试图吧,可以解决,以后只要修改试图就OK,<br>select&nbsp;code,sum(recmoney)&nbsp;from&nbsp;收款记录&nbsp;group&nbsp;by&nbsp;code<br>然后使用游标.
 
帮你顶一下,接个小分!
 
做成储存过程能??<br>我知道大概是这样<br>declare&nbsp;@s&nbsp;varchar(8000)<br>set&nbsp;@s='select&nbsp;..........'<br>exec(@s)<br>具体不会,知道的麻烦告诉我
 
做成存储过程和执行SQL语句一样的!只是速度问题!
 
select&nbsp;Case&nbsp;code&nbsp;when&nbsp;'RMB'&nbsp;then&nbsp;Sum(RecMoney)&nbsp;end&nbsp;as&nbsp;'人民币'&nbsp;From&nbsp;<br>(Select&nbsp;*&nbsp;From&nbsp;币表&nbsp;A&nbsp;left&nbsp;join&nbsp;收款记录&nbsp;B&nbsp;on&nbsp;A.Code=B.Code&nbsp;)<br>Group&nbsp;By&nbsp;Code<br><br>没有调试,你自己看看,Case是可以实现你想要的效果的
 
DECLARE&nbsp;@SQL&nbsp;VARCHAR(800)<br>DECLARE&nbsp;@SQL1&nbsp;VARCHAR(800)&nbsp;<br>SELECT&nbsp;@SQL&nbsp;=&nbsp;'SELECT&nbsp;'<br>SELECT&nbsp;@SQL1&nbsp;=&nbsp;''<br><br>SELECT&nbsp;&nbsp;@SQL&nbsp;=&nbsp;&nbsp;@SQL&nbsp;+&nbsp;'CASE&nbsp;WHEN&nbsp;a.cname&nbsp;=&nbsp;'''&nbsp;+a.cname&nbsp;&nbsp;+&nbsp;'''&nbsp;then&nbsp;sum(b.recmoney)&nbsp;end&nbsp;as&nbsp;&nbsp;'&nbsp;+&nbsp;a.cname&nbsp;+&nbsp;',',@SQL1&nbsp;=&nbsp;@SQL1&nbsp;+&nbsp;&nbsp;'SUM('&nbsp;+&nbsp;a.cname&nbsp;+')&nbsp;as&nbsp;'&nbsp;+&nbsp;a.cname&nbsp;+&nbsp;','<br>FROM&nbsp;币别&nbsp;a&nbsp;,&nbsp;收款记录&nbsp;b<br>WHERE&nbsp;a.code&nbsp;=&nbsp;b.code<br>GROUP&nbsp;BY&nbsp;a.code,a.cname<br>&nbsp;<br>SELECT&nbsp;@SQL&nbsp;=&nbsp;SUBSTRING(@SQL,1,LEN(@SQL)&nbsp;-1)&nbsp;+&nbsp;'&nbsp;'<br>SELECT&nbsp;@SQL&nbsp;=&nbsp;@SQL&nbsp;+&nbsp;'FROM&nbsp;币别&nbsp;a&nbsp;,&nbsp;收款记录&nbsp;b<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;a.code&nbsp;=&nbsp;b.code<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GROUP&nbsp;BY&nbsp;a.code,a.cname<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'<br>SELECT&nbsp;@SQL1&nbsp;=&nbsp;SUBSTRING(@SQL1,1,LEN(@SQL1)&nbsp;-1)&nbsp;+&nbsp;'&nbsp;'<br>EXEC('SELECT&nbsp;'&nbsp;+&nbsp;@SQL1&nbsp;+&nbsp;'&nbsp;FROM&nbsp;('+&nbsp;@SQL&nbsp;+&nbsp;')&nbsp;D'&nbsp;)
 

Similar threads

D
回复
0
查看
948
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部