最后两百分,散分过年.

九斤半 2007-01-18 09:43:30
有没有其它好的办法~~~

PS:采用的方法给88分

CREATE TABLE A(ID INT IDENTITY(1,1),ITEM NVARCHAR(20))
INSERT A(ITEM) SELECT 'AB'
INSERT A(ITEM) SELECT 'AB'
INSERT A(ITEM) SELECT 'BC'
INSERT A(ITEM) SELECT 'AB'
SELECT * FROM A

CREATE TABLE B(ITEM NVARCHAR(20),QTY INT)
INSERT B SELECT 'AB',190
INSERT B SELECT 'BC',100
SELECT * FROM B

-- 我要得到
-- 同ITEM的只需ID最小的那条记录对应出B表的QTY
-- 如结果中:ITEM=AB的,ID=1的QTY_2=190,ID=2和ID=4的QTY_2=0
SELECT
I.*,
B.QTY,
CASE WHEN NOT EXISTS(SELECT 1 FROM A WHERE ITEM=I.ITEM AND ID<I.ID) THEN B.QTY ELSE 0 END AS QTY_2
FROM A I LEFT JOIN B ON I.ITEM=B.ITEM

DROP TABLE A,B
...全文
621 69 打赏 收藏 转发到动态 举报
写回复
用AI写文章
69 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2007-01-21
  • 打赏
  • 举报
回复
jf
OracleRoob 2007-01-21
  • 打赏
  • 举报
回复
:)
silvanus 2007-01-21
  • 打赏
  • 举报
回复
mark
berwos 2007-01-21
  • 打赏
  • 举报
回复
jf
dovelee 2007-01-20
  • 打赏
  • 举报
回复
jf
hui_feng 2007-01-20
  • 打赏
  • 举报
回复
jf
dinho 2007-01-20
  • 打赏
  • 举报
回复
谢谢了,jf
yjlhch 2007-01-20
  • 打赏
  • 举报
回复
谢谢了,jf
feixiangVB 2007-01-19
  • 打赏
  • 举报
回复
接分過年
beibeishen 2007-01-19
  • 打赏
  • 举报
回复
up
hubinlin 2007-01-19
  • 打赏
  • 举报
回复
up
netesky 2007-01-19
  • 打赏
  • 举报
回复
接分過年
jack_man_ 2007-01-18
  • 打赏
  • 举报
回复
jf
hyc_music1981 2007-01-18
  • 打赏
  • 举报
回复
报歉,刚才写的有点问题,忘记了left,请指教:
select a1.*,b.qty
from A a1
left join B b on a1.item=b.item
where a1.id=(select top 1 id from A a2 where a2.item=a1.item order by id)
Romance2010 2007-01-18
  • 打赏
  • 举报
回复
== 我
冷箫轻笛 2007-01-18
  • 打赏
  • 举报
回复
搞定了没有?
没搞定楼主请回复!
glacier111 2007-01-18
  • 打赏
  • 举报
回复
jf
fellowcheng 2007-01-18
  • 打赏
  • 举报
回复
看看
roc_zhang 2007-01-18
  • 打赏
  • 举报
回复
楼主的方法已经很好了,实在想不到更好的方法了.
DengXingJie 2007-01-18
  • 打赏
  • 举报
回复
加载更多回复(49)

11,850

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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