求写sql语句(<font color=red>倾家荡产了</font>)(140分)

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

stupid

Unregistered / Unconfirmed
GUEST, unregistred user!
<table border="1">
<tr>
<td>序号(key)</td>
<td>商场代码</td>
<td>商品代码</td>
<td>售价</td>
<td>统计时间</td>
</tr>
<tr>
<td>1......1</td>
<td>01</td>
<td><font color="#00FF00">s1</font></td>
<td>100</td>
<td>1998-1-1</td>
</tr>
<tr>
<td>1......2</td>
<td>01</td>
<td><font color="#00FF00">s1</font></td>
<td><font color="#FF0000">200</font></td>
<td><font color="#FF0000">1998-11-2</font></td>
</tr>
<tr>
<td>1......3</td>
<td>01</td>
<td>s2</td>
<td>300</td>
<td>1998-12-1</td>
</tr>
<tr>
<td> </td>
<td>02</td>
<td><font color="#0000FF">s2</font></td>
<td><font color="#FF0000">400</font></td>
<td><font color="#FF0000">1999-1-1</font></td>
</tr>
<tr>
<td> </td>
<td>02</td>
<td><font color="#0000FF">s2</font></td>
<td>110</td>
<td>1998-4-1</td>
</tr>
<tr>
<td> </td>
<td>02</td>
<td>s3</td>
<td>120</td>
<td>1998-4-5</td>
</tr>
<tr>
<td> </td>
<td>03</td>
<td><font color="#0000FF">s2</font></td>
<td>130</td>
<td>1997-3-6</td>
</tr>
<tr>
<td> </td>
<td>03</td>
<td><font color="#0000FF">s2</font></td>
<td><font color="#FF0000">145</font></td>
<td><font color="#FF0000">1998-7-1</font></td>
</tr>
<tr>
<td> </td>
<td>03</td>
<td><font color="#0000FF">s2</font></td>
<td>134</td>
<td>1998-6-6</td>
</tr>
<tr>
<td> </td>
<td>03</td>
<td>s3</td>
<td>212</td>
<td>1999-1-1</td>
</tr>
<tr>
<td>..........</td>
<td>........</td>
<td>....</td>
<td>...</td>
<td>....</td>
</tr>
<tr>
<td>1.......n</td>
<td>0n</td>
<td>sn</td>
<td>140</td>
<td> </td>
</tr>
</table>

<p>我的目的是:取得各商场的各种商品的最新销售价</p>

<p>产生如下表格。希望各位大虾教我一手。</p>

<table border="1">
<tr>
<td>商品代码</td>
<td>商场1售价</td>
<td>商场2售价</td>
<td>商场3售价</td>
<td>商场..售价</td>
<td>商场n售价</td>
</tr>
<tr>
<td>s1</td>
<td><font color="#FF0000">200</font></td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>s2</td>
<td>300</td>
<td><font color="#FF0000">400</font></td>
<td><font color="#FF0000">145</font></td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>s3</td>
<td>0</td>
<td>120</td>
<td>212</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>....</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
</table>
 
你要生成的表二维都是不定的吗?
 
定的,商场数量是一定的。
 
不用sql语句 也可以得到
 
用DecisionCube试一下
 
什么环境?MSSQL or Local SQL?
 
1.一种方法如<font color="red">huizhang</font>所说,用<font color="red">DecisionCube</font>可以实现,甚至带来其它
意想不到的效果,取得各种想要的统计数据,但似乎该构件不太稳定,
尤其在Delphi4下更甚,故需小心使用,<font color="red">用好是个宝!</font>

2.还有一种方法是自己从头做,首先使用SQL语句:
设 商场代码为shop, 商品代码为goods 售价为price
统计时间statdate
select goods,shop,price from yourtable
where (goods,shop,statdate) in
(select goods,shop,max(statdate)
from yourtable group by goods,shop )
该语句取得各商场的各种商品的最新销售价,
然后,使用TStringGrid,按你的要求使用相应的SQL语句填写
首行于首列.最后,在一个循环读上述SQL语句返回的结果填到
Grid中的相应位置即可
 
TO barton:
在ms sql server 7下。
To huizhang :
用DecisionCube可以生成表吗?
 
stupid:
DecisionCube不能生成物理上的表,只是提供决策支持,
我也使用过,完全能满足你的要求,我上面说的第二种方法也应当可行
 
创建一个视图,将各个商店每一种商品价格的列用商品类型进行连接
可以得到你需要的结构,并且创建以后这个视图会根据每一种商品价格的变化
自动更新。只要商品的种类和商店的个数不增加就可以一劳永逸
当然,应当将商店和和商品类型多的一个作为连接属性
实现起来比较麻烦,但肯定可以。sqlserver6。5是支持连接视图的
 
不用SQL不行吗????
保存商场名:(列表不重复)
根据商场名检索响应商场中的售货以及做新价格(日期最新)
填写表格。
笨了点,速度稍微慢了点,但简单易行。

用SQL吗,HEKAI的回答很好,速度快。
 
记得有一本杂志介绍SQL Server 7 的新功能时讲到它的数据旋转功能,
不知你可查过?
若无,可如下:
1. 定义单位矩阵表 IdentityMatrix(shop,c1,c2,c3,...,cn)
注意:商场代码与1的位置相对应
商场1 1 0 0 0 ....
商场2 0 1 0 0 ....
商场3 0 0 1 0 ....
....................
2. CREATE VIEW NewData AS
select goods,shop,price from yourtable
where (goods,shop,statdate) in
( select goods,shop,max(statdate)
from YourTable group by goods,shop )
order by goods,shop
3. insert into newgrid
( select goods,sum(price*c1),sum(price*c2),...,sum(price*cn)
from NewData,IdentityMatrix
where NewData.shop=IdentityMatrix.shop
group by goods )
大约如此,细节方面请各位考虑.
 
select ... from table where .. datecolumn=(select max(datecolumn) from table).. group by ..
 
我也做过类似的数据库。解决办法是:先建立一个临时数据表,然后使用Sql的
Update语句按条件和循环更新临时数据表.但涉及到用SQL将一个数据表更新另
一个数据表,只能在Access或SQL Server下通过,因为MS支持完整的SQL功能,甚
至加以扩展.在Porodx下的本地SQL无法通过.
 
效果如何?请结束此问题,如连不上,试试:
http://202.120.85.61/DELPHIBBS/DispQ.asp?LID=117217
 
这是标准的纵向表问题,我们公司的 地税项目 就经常碰到该类的问题
oracle公司的说法是:
用存储过程创建临时表............
方法不怎么样,但管用.
 
不知你用的什么DB,可以只用VIEW即可
spear=zaoya
 
巧用数据库中的link 功能!!!!!!
 
select good, shop, substring(max(convert(char(12),thedate)+convert(varchar(12),price)),13,12) as newprice
from table1
group by good, shop
 
多人接受答案了。
 
后退
顶部