以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何用SQL语句得到这样一个表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=72225)

--  作者:loongtai
--  发布时间:2015/7/26 10:47:00
--  [求助]如何用SQL语句得到这样一个表
表结构如下:

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150726103813.png
图片点击可在新窗口打开查看
同一物料全编号,同一到货编号,同一流水号的数据可能有多个记录。
将单据编号排序,即可得到每个记录的操作顺序。
现希望将同一物料全编号同一到货编号同一流水号的最近一次操作记录状态为0的行提取出来,组成一个新表。
身份列  状态
其中身份列=物料全编号 & “|” & 到货编号 & “|” & 流水号
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:sql根据状态提取数据.zip



--  作者:大红袍
--  发布时间:2015/7/26 11:28:00
--  
select 物料全编号 + \'|\' + 到货编号 + \'|\' & 流水号 as 身份, (select top 1 状态 f-rom {表1} as b where a.物料全编号 = b.物料全编号 and a.到货编号 = b.到货编号 and a.流水号 = b.流水号 order by 单据编号 desc) as 状态 f-rom {表1} as a group by 物料全编号, 到货编号, 流水号
--  作者:loongtai
--  发布时间:2015/7/26 14:55:00
--  
按以上的语句,能实现我所想要的结果,如果更进一步,只挑出top 1 状态=0的记录,该如何操作?我试着修改了下,但是不成功

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150726145550.png
图片点击可在新窗口打开查看


--  作者:大红袍
--  发布时间:2015/7/26 14:57:00
--  
select * f-rom (sql语句) where 状态 = 0
--  作者:loongtai
--  发布时间:2015/7/26 15:08:00
--  
如果我之前得到的那个表只需要身份列,不需要状态列,那这个语句是不是能简单点?
select 物料全编号 + \'|\' + 到货编号 + \'|\' & 流水号 as 身份, (select top 1 状态 f-rom {表1} as b where a.物料全编号 = b.物料全编号 and a.到货编号 = b.到货编号 and a.流水号 = b.流水号 order by 单据编号 desc) as 状态 f-rom {表1} as a group by 物料全编号, 到货编号, 流水号
换成类似这样的语句:在where 中对top 1 状态 进行判断

此主题相关图片如下:qq截图20150726150848.png
按此在新窗口浏览图片


--  作者:大红袍
--  发布时间:2015/7/26 15:10:00
--  

看4楼,那样写才正确。


--  作者:loongtai
--  发布时间:2015/7/26 15:19:00
--  
4楼的我试过了,是正确的。