sql的查询问题 ?各位高手请回答 :) (100分)

  • 主题发起人 主题发起人 wzb_shipman
  • 开始时间 开始时间
W

wzb_shipman

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个表
表有如下字段
table1['工程单位']:=combobox1.Text;
table1['一共费用']:=strtofloat(label7.Caption);
table1['工程日期']:=year*10000+month*100+day;
想通过sql 查询语句 实现如下功能
输入参数 1 工程单位数量(选择前几个单位的数量其排列根据参数2)
2 金额或工程数量
3 选择日期范围。
在选择指定日期范围中根据金额或工程数量排序挑选前几个工程单位(数量根据参数1)[:)]



 
select top :单位数量 工程单位 from table1 where 工程时间 between :开始时间 and :结束时间
order by 金额 desc
我是只菜鸟 我也忘了top 应该写在那了
 
可能是 :select 工程单位 from (select top :单位数量 from table1 where 工程时间 between :开始时间
and :结束时间 order by 金额 asc)
 
想确认一下,是不是输入工程数或总金额。
如果输入总金额,需要选出前几家单位其总金额等于或小于总金额
再问?
是不是有两个概念,工程数量和工程单位数量?
有什么不同?
 
to gophie
输入工程单位数量,根据输入的数量,排列选中的金额或工程数量前几位输出。
列如工程单位 日期 金额
a 2002.3.4 500$
b 2002.3.5 600$
c 2002.3.12 800$
a 2002.3.24 700$
a 2002.4.23 1000$
c 2002.5.6 1000$
a 2002.6.3 100
??????????????????? 又一个问题
输入 日期范围 2002.3-----2002.7
得出
3 4 5 6 7
a 1200$ 1000$ 0$ 100$ 0$

b 600$ 0$ 0$ 0$ 0$

c 800$ 0$ 1000$ 0$ 0$
输入工程单位数量 2
排列方式为 金额
输入日期 2002.3-----2002.7
得出
工程单位 工程金额
a 2200
c 1800
输入工程单位数量 3
排列方式为 工程数量
输入日期 2002.3-----2002.7
得出

工程单位 工程数量
a 3
c 2
b 1
 
select * from (
select 工程单位,count(*) count,sum(fee) fee
from table1 where 工程日期 between :date1 to :date2
group by 工程单位 order by :选择条件 desc)
where rownum<=:工程单位数量

当然,:选择条件需要在程序里面说明一下。
if 排列方式为 金额
parambyname(选择条件):=sum(fee)

if 排列方式为 工程数量
parambyname(选择条件):=count(*)

唉,连我都说不清楚,你看清楚了吗?
 
多人接受答案了。
 
后退
顶部