求一段SQL语句(200分)

  • 主题发起人 delphihsc
  • 开始时间
D

delphihsc

Unregistered / Unconfirmed
GUEST, unregistred user!
我要做一个采购分析,要某段时间某些品种的最初日期与最终日期的入库价格数据

wzbm,mindata, mindj, maxdata, maxdj
01 20020101 10 20020701 8
02 ..... . ..... ...
表是这样的
wzbm JKRQ,JKDJ
01 ... ...
01 ... ...
01 ... ...
02
02
注:该系统有可能同一天有单个品名的多笔记录




 
select wzbm, minidata=@MiniDate, min(jkdj), maxdata=@MaxDate, max(jkdj)
from TableName
where jkrq between @MiniDate and @MaxDate
group by wzbm
 
to leechang
你这样做有些问题:
1。我要的是最小或大日期对应的价格。而你却分开了。出来的结果
日期是最小或最大。价格也是最小或最大
2。如果同一天同一品种有两个记录,GROUP BY后记录重复了
 
>>>1。我要的是最小或大日期对应的价格。而你却分开了。出来的结果
日期是最小或最大。价格也是最小或最大
你自己看一下你对问题的描述,看看该怎么理解.
>>>2。如果同一天同一品种有两个记录,GROUP BY后记录重复了
Group By后怎么会重复呢?

 
这个问题是可以解决的,但之前要确定一个问题:
当同一天出现2条以上记录,以哪一条为准?
 
select a.wzbm,b.mindate,b.mindj,c.maxdate,c.maxdj
from tabname a,
(select top 1 wzbm min(JKRQ)as mindate,JKDJ as mindj
from tabname
group by wzbm,jkdj where a.wzbm=tablename.wzbm )b,
(select top 1 wzbm,max(jkrq)as maxdate,jkdjas maxdj
from tabname
group by wzbm,jkdj where a.wzbm=tablename.wzbm)c
where a.wzbm=b.wzbm and a.wzbm=c.wzbm
 
问题的意思就是要多用几个SELECT,把最大日期和最小日期的价格列出来,可以用复合查询,
找出最大日期对应的记录和最小日期对应的记录,讲其按品种名分组,以日期进行升序排列,,

我用 IN 来实现,,不知道可不可以,,
select *
from yourtable
where (wzbm in
(slect wzbm,min(mindata) MinDate,mindj,maxdata,maxdj
from yourtable group by wzbm))
or
(wzbm in (select wzbm,max(mindata) MinDate,mindj,maxdata,maxdj
from yourtable group by wzbm)
)
 
to ugvanxk:
你用的是SQL SERVER 吧?

我以前用过一段时间的ORACLE,

呵呵,希望以后能多多指教!!!
 
to unvanxk:
你出来的是一个物资的数据,而我要的是很多物资的数据
TOP 1只能取一个数据啊!



 
用"and",连接两个"select"语句不就可以了吗!不过按照你的问题,你所建的表本身就不
是很规范了!你应该先提高你的表的范式!
 
用游标可以解决
 
求助:
多个select 语句的书写格式

以前没用过。看了之后觉得好像很有用
 
写一起吧?
我在sqlserver的查询分析器试过是可以的

delphihsc的问题是不是问得有点问题
我看半天不懂啊
 
to 12W34E等。表是出来的结果,表设计我觉得没问题!
源是个采购明细表。老板要分析某些物资的某段时间价格涨跌情况。
一个物资当然好办!用UGVANXK就可以了
多个较麻烦我现在做的是用多个SQL语句,数据量太大就比较慢了
 
to puyd
如果同一天出现两条记录可以随便取一条!
 
select distinct a.wzbm, b.jkrq minidate, b.jkdj minidj, c.jkrq maxdate c.jkdj maxdj
from tablename a,
(select top 1 * from tablename where wzbm=a.wzbm and jkrq between @Date1 and @Date2 order by jkdj) b,
(select top 1 * from tablename where wzbm=a.wzbm and jkrq between @Date1 and @Date2 order by jkdj desc) c
where a.wzbm=b.wzbm and a.wzbm=c.wzbm
 
to leechang:
TOP 1不就只有一条记录?
 
你不是需要知道在一段时期内的最高价格和最低价格以及他们各自对应的日期吗?
如果我的理解又不对,那我实在是没办法从你的提问中再得到什么信息了.
 
请问你的最大日期和最大单价,最小日期和最小单价是从同一表数据提出,还是通过两表
数据提出的,你提供的表好象没有最小最大单价,而最终数据却有?尽快说
 
是最小日期对应的价格。和最大日期对应的价格
 
顶部