表表比较问题?求sql语句
表t1字段:
date name count id
2007年3月6日 胡豆 20 0001
2007年3月6日 豌豆 5 0002
2007年3月6日 黄豆 8 0003
表t2字段:
name id stock_count condition
胡豆 0001 10 20071
胡豆 0001 2 20072
胡豆 0001 5 20073
黄豆 0003 10 20025
如上面两表。
现在要得到以下结果:
date name count id condition
2007年3月6日 胡豆 10 0001 20071
2007年3月6日 胡豆 2 0001 20072
2007年3月6日 胡豆 5 0001 20073
2007年3月6日 黄豆 10 0003 20025
如何实现?求这个的sql语句~
[解决办法]
mugua604(熟不了的木瓜) ( ) 信誉:100 Blog 2007-03-23 16:22:22 得分: 0
简单的关联,分清主从表就可以了!
--------------
你沒看清題意,再看看下面的回復,這個題目不是那麼簡單的。
[解决办法]
Create Table t1
([date]Nvarchar(20),
nameNvarchar(10),
[count]Int,
idVarchar(10))
Insert t1 Select N '2007年3月6日 ', N '胡豆 ', 20, '0001 '
Union All Select N '2007年3月6日 ', N '豌豆 ', 5, '0002 '
Union All Select N '2007年3月6日 ', N '黄豆 ', 8, '0003 '
Create Table t2
(nameNvarchar(10),
idVarchar(10),
[stock_count]Int,
conditionVarchar(10))
Insert t2 Select N '胡豆 ', '0001 ', 10, '20071 '
Union All Select N '胡豆 ', '0001 ', 2, '20072 '
Union All Select N '胡豆 ', '0001 ', 5, '20073 '
Union All Select N '胡豆 ', '0001 ', 5, '20074 '
Union All Select N '胡豆 ', '0001 ', 5, '20075 '
Union All Select N '黄豆 ', '0003 ', 10, '20025 '
GO
Select
A.[date],
A.name,
(Case When C.stock_count + C.SUMstock_count > A.[count] Then A.[count] - C.SUMstock_count Else C.stock_count End) As [count],
A.id,
C.[condition]
From
t1 A
Inner Join
(Select B.*, IsNull((Select SUM(stock_count) From t2 Where name = B.name And id= B.id And condition < B.condition), 0) As SUMstock_count From t2 B) C
On A.name = C.name And A.id = C.id And A.[count] > C.SUMstock_count
Go
Drop Table t1, t2
--Result
/*
datenamecountidcondition
2007年3月6日胡豆10000120071
2007年3月6日胡豆2000120072
2007年3月6日胡豆5000120073
2007年3月6日胡豆3000120074
2007年3月6日黄豆8000320025
*/