MSSQL 相当困难的SQL?

hwj383 2009-02-11 03:26:29
描述:
有两个表,一个头,一个体,体通过ParentId来关联头,关联表

Body通过ParentId关联Head的ID
Head通过DealerId关联Dealer的ID
Body通过ProductId关联Product的ID


如表:
Head表,下面描述表结构和记录
ID Code Name reciptDate DealerID
1 001 单据1 2009-1-1 1
2 002 单据2 2009-1-2 1
3 003 单据3 2009-1-3 1
4 004 单据4 2009-1-4 2
5 006 单据5 2009-1-5 2
6 006 单据6 2009-1-6 2

Body表,下面描述表结构和记录
ID ProductId ParentId
1 1 1
2 2 1
3 3 1
4 1 2
5 2 2
6 3 2
7 7 3
8 4 3
9 9 3
10 10 4
11 1 4
12 12 5
13 2 5
14 14 6
15 3 6

Dealer表,下面描述表结构和记录
ID Name
1 经销商1
2 经销商2
Product表,下面描述表结构和记录
ID Name
1 产品1
2 产品2
3 产品3
4 产品4
5 产品5
6 产品6
7 产品7
8 产品9
9 产品9
10 产品10
11 产品11
12 产品12
13 产品13
14 产品14
15 产品15


问题以及描述:

取每个经销商的每个商品比系统时间小倒序(getdate())的第一个记录

假设给定的时间是2009-1-5日
则结果为
DealerName ProductName ReciptDate
经销商1 商品7 2009-1-3
经销商1 商品4 2009-1-3
经销商1 商品9 2009-1-3
经销商2 商品10 2009-1-4
经销商2 商品1 2009-1-4

...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
水族杰纶 2009-02-11
  • 打赏
  • 举报
回复
ghs79 2009-02-11
  • 打赏
  • 举报
回复
select dealer.name dealername, Product.name Productname, max(head.reciptdate) reciptdate from head, body, dealer, Product
where body.parentid = head.id and head.dealerid = dealer.id and body.productid = product.id
and head.reciptdate <= getdate()
group by dealer.name, Product.name
ws_hgo 2009-02-11
  • 打赏
  • 举报
回复
关注...
「已注销」 2009-02-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chuifengde 的回复:]
SQL codeSELECT * FROM Dealer a INNER JOIN head b ON a.id=b.DealerID INNER JOIN Body c ON b.id=c.ParentId INNER JOIN Product d ON c.ProductId=d.ID
WHERE NOT EXISTS(SELECT 1 FROM head WHERE DealerID=b.DealerID AND reciptDate>b.reciptDate AND reciptDate<日期变量) and b.reciptDate<日期变量
[/Quote]
谢谢,先试试再说

[Quote=引用 2 楼 fcuandy 的回复:]
相当 。。。。。
[/Quote]
还有几个更困难的,疯都疯了,变态的需求,这只是部分SQL。。。。还得拼..
fcuandy 2009-02-11
  • 打赏
  • 举报
回复
相当 。。。。。
chuifengde 2009-02-11
  • 打赏
  • 举报
回复
SELECT * FROM Dealer a INNER JOIN head b ON a.id=b.DealerID INNER JOIN  Body c ON b.id=c.ParentId INNER JOIN Product d ON c.ProductId=d.ID  
WHERE NOT EXISTS(SELECT 1 FROM head WHERE DealerID=b.DealerID AND reciptDate>b.reciptDate AND reciptDate<日期变量) and b.reciptDate<日期变量

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧