SQL SERVER 2005两表关联查询问题,查询某商品最后一次进价
有A、B两表,A表存放汇总信息,包括单据编号,日期等信息,单据编号唯一。B表存放明细信息,包括单据编号,商品内码,数量,价格等信息,单据编号不唯一,A、B两表属于一对多关...
有A、B两表,A表存放汇总信息,包括单据编号,日期等信息,单据编号唯一。B表存放明细信息,包括单据编号,商品内码,数量,价格等信息,单据编号不唯一,A、B两表属于一对多关系,根据单据编号连接。现在想查某个商品最后一次购进的信息,包括日期,数量,价格等。
展开
4个回答
展开全部
select Top 1 A.日期,B.数量,B.价格 from A left join B on A.单据编号=B.单据编号 where B.商品内码='你要查询的商品内码' order by A.日期 desc
你试试我的SQL 。
你试试我的SQL 。
更多追问追答
追问
试过了呢,查单个商品可以,要查所有的商品最后一次进价呢?
追答
select * from B as B1 where exists (select Max(a.日期) from A left join B on A.单据编号=B.单据编号 where A.单据编码=B1.单据编码 Group by A.日期,B.商品内码 )
这个你试试
我这个意思就是按日期查出每个商品的最大日期对应的 单据编码。 有了单据编码 想查啥都能查出来了。
我这个SQL只显示了B表中的信息 如果需要A表中的信息 可以关联一下A表 也就出来了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你试试,我也不确定对不对
select * from b
where exists
( select 1 from a a1 where a1.日期 =
( select max(a.日期)
from a
where a.单据编号 = b.单据编号
and b.商品内码 = 'xxxxx'
and a1.单据编号 = b.单据编号
)
)
select * from b
where exists
( select 1 from a a1 where a1.日期 =
( select max(a.日期)
from a
where a.单据编号 = b.单据编号
and b.商品内码 = 'xxxxx'
and a1.单据编号 = b.单据编号
)
)
更多追问追答
追问
消息 147,级别 15,状态 1,第 2 行
聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。
追答
这个应该没有问题了。
select b.* from b,a
where a.单据编号 = b.单据编号
and a.日期 = (
select max(a.日期)
from a,b
where a.单据编号 = b.单据编号
and b.商品内码 = 'xxxxx'
)
and b.商品内码 = 'xxxxx'
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select max (日期), * from 表 B
group by 单据编号
group by 单据编号
更多追问追答
追问
我想说,B表没有日期。。
追答
写详细点表结构
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
--最后一次购进 应该是最晚的日期为判断吧
更多追问追答
追问
我知道是根据最大日期,但是怎么关联呢?
追答
--先排个序 然后预算
--有我们问题可以随时找我 希望采纳 一起执行
with tbname as (
select a.单据编号,a.日期,b.商品内码,b.数量,b.价格,
ROW_NUMBER() over (partition by b.商品内码 order by a.日期 desc) bz
from a join b on a.单据编号=b.单据编号)
select 单据编号,日期,商品内码,数量,价格
from tbname where bz=1 and 商品内码=‘你要查询的商品’
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询