首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

表表比较有关问题?求sql语句

2012-01-14 
表表比较问题?求sql语句表t1字段:datenamecountid2007年3月6日胡豆2000012007年3月6日豌豆500022007年3月6

表表比较问题?求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
*/

热点排行