想了二三天的SQL問題,答出送完我的分 ( 积分: 100 )

  • 主题发起人 主题发起人 masterKingmark
  • 开始时间 开始时间
M

masterKingmark

Unregistered / Unconfirmed
GUEST, unregistred user!
問題是這樣的。。。<br>TABLE&nbsp;1<br>采購單號&nbsp;&nbsp;&nbsp;&nbsp;客戶名稱<br>A20070101&nbsp;&nbsp;&nbsp;&nbsp;張先生<br>A20070102&nbsp;&nbsp;&nbsp;&nbsp;林先生<br><br>TABLE&nbsp;2<br>銷售單號&nbsp;&nbsp;采購單號<br>B20070201&nbsp;&nbsp;A20070101<br>B20071218&nbsp;&nbsp;A20070101<br><br>得到結果<br><br>采購單號&nbsp;&nbsp;&nbsp;&nbsp;客戶名稱&nbsp;&nbsp;&nbsp;&nbsp;銷售單號<br>A20070101&nbsp;&nbsp;&nbsp;&nbsp;張先生&nbsp;&nbsp;&nbsp;&nbsp;B20070201,B20071218<br>A20070102&nbsp;&nbsp;&nbsp;&nbsp;林先生<br>怎麼可以用一條SQL語句實現
 
哥们你这题问的也太复杂了些吧!<br>帮顶吧!
 
難道要用游標一條一條加入去!!有沒有好的建議。。哥們
 
如果你非得这样显示的话,可能真的这样了.
 
如果張先生的銷售單號很多,你准备在一个字段中连续写下去?为什么不用主从表格式?
 
同意樓上,這樣你的結果中銷售單號可能會很長的;
 
一条恐怕比较麻烦,用存储过程返回结果可否?
 
同意kaida,支持用主从表。
 
SELECT&nbsp;TABLE&nbsp;1.采購單號,&nbsp;TABLE&nbsp;1.客戶名稱&nbsp;(<br>&nbsp;SELECT&nbsp;TABLE2.銷售單號&nbsp;FROM&nbsp;TABLE2&nbsp;WHERE&nbsp;<br>)&nbsp;AS&nbsp;銷售單號&nbsp;FROM&nbsp;TABLE1<br><br>不行不行,还是用一条一条插吧`````
 
因為ERP已經寫好啦!!在裡面加多幾張報表。。所以要這麼做<br>能不能用CASE的方法,<br>DECLARE&nbsp;@TEST&nbsp;VARCHAR(8000)<br>SELECT&nbsp;CASE&nbsp;WHEN&nbsp;采購單號=采購單號&nbsp;THEN&nbsp;SET&nbsp;@TEST=@TEST+銷售單號&nbsp;<br>FROM&nbsp;TABLE1<br>&nbsp;INNER&nbsp;JOIN&nbsp;TABLE2&nbsp;TABLE1.采購單號=TABLE2.采購單號
 
还是用存储过程完成吧,先创建一个临时表,把每个采购单号对应的销售单号查出来生成一个字符串,然后再和TABLE&nbsp;1查询
 
沒辦法,看來只能這樣做啦!!
 
用存储过程吧,&nbsp;&nbsp;没有ERP不用存储过程的。
 
分批采用臨時表來實現。
 
CREATE&nbsp;FUNCTION&nbsp;[dbo].[sumStr]&nbsp;(@采购单号&nbsp;varchar(50),@客户名称&nbsp;varchar(50))&nbsp;&nbsp;<br>RETURNS&nbsp;varchar(8000)&nbsp;AS&nbsp;&nbsp;<br>BEGIN&nbsp;<br> declare&nbsp;@TotalStr&nbsp;varchar(8000);<br> declare&nbsp;@sbCode&nbsp;varchar(50);<br> declare&nbsp;MyCu&nbsp;cursor<br> for&nbsp;<br> select&nbsp;销售单号<br> from&nbsp;td_StockBill,td_SellBill<br> where&nbsp;StockBill_Code=SellBill_StockBillCode<br> and&nbsp;stockBill_Code=@采购单号<br> and&nbsp;StockBill_CompanyName=@客户名称<br> open&nbsp;MyCu;<br> fetch&nbsp;MyCu&nbsp;into&nbsp;@sbCode;<br> if&nbsp;(@@Fetch_Status=0)<br> Set&nbsp;@TotalStr=@sbCode;<br> fetch&nbsp;MyCu&nbsp;into&nbsp;@sbCode;<br> while&nbsp;(@@Fetch_Status=0)<br> begin<br> set&nbsp;@TotalStr=@TotalStr+','+@sbCode;<br> fetch&nbsp;MyCu&nbsp;into&nbsp;@sbCode;<br> end;<br> close&nbsp;MyCu;<br> return&nbsp;@TotalStr;<br>END<br><br>建个函数,<br>再用一句sql查出来
 
好像很多人有这样的需求啊,多人问过了
 
这个问题值得研究.一起来学习下<br>对应关系有问题么?我觉得采购单和销售单是唯一的,客户名称,一个客户可以有很多采购单的啊.
 
用视图轻松解决,在查询视图
 
有必要放在一个表里么
 
用存儲過程實現啦,但速度不夠快。。。五千多的記錄。。要十多秒!!
 
后退
顶部