循环语句查询结果能否输出到一张表上

yuzhifu1 2011-10-14 01:58:20
这样查询出来的是很多张表,我想输出到一张表上,如何做,谢谢!

declare @finterid int
set @finterid=1700
while @finterid<=1755

begin
Create Table #MutiParentItem( FIndex int IDENTITY,FEntryID INT default(0), FBomInterid int, FItemID int null, FNeedQty decimal(28,14) default(0) null, FBOMLevel int null, FItemType int null, FParentID int default(0)null, FRate decimal(28,14) default(0) null, FHistory int default(0) null, FHaveMrp smallint default(0) null, FLevelString varchar(200) null , FBom int, FMaterielType int default(371) null,FOperSN Int NULL DEFAULT(0),FOperID int default(0),FRootBOMID int default(0))

Insert into #mutiParentItem (fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FBom,FRootBOMID) Select a.finterid, t1.FItemID,a.fqty, 0,0,(case t5.FID when 'WG' then 0 when 'ZZ' then 1 when 'WWJG' then 1 else 2 end) FItemtype,t1.FItemID,a.finterid From icbom a
inner join t_ICItem t1 on t1.FItemID = a.fitemid
left join t_Submessage t5 on t1.FErpClsID = t5.FInterID
where t5.FTypeID = 210 and a.finterid=@finterid

Create Table #Mutidata ( FIndex int IDENTITY,FEntryID INT, FBomInterid int, FItemID int null, FNeedQty decimal(28,14) default(0) null, FBOMLevel int null, FItemType int null, FParentID int default(0)null, FRate decimal(28,14) default(0) null, FHistory int default(0) null, FHaveMrp smallint default(0) null, FLevelString varchar(200) null, FBom int, FMaterielType int default(371) null,FOperSN Int NULL DEFAULT(0),FOperID int default(0),FRootBOMID int default(0))
Create Table #Errors ( FIndex int IDENTITY, FType smallint default(0), FErrText nvarchar(355) )

declare @p5 int
set @p5=0
declare @p6 nchar(400)
set @p6=N''
exec PlanMutiBomExpand 50,1,'1900-01-01 00:00:00:000','2100-01-01 00:00:00:000',@p5 output,@p6 output

select a.FBomInterid,a.FEntryID,a.FLevelString FLevel,d.FEntryKey, b.fnumber FNumber,b.fname FName,isnull(b.FModel,'') FModel, k.FName as FErpClsName,b.FChartNumber AS FChartNumber,isnull(c.Fname,'') FUnitID, a.FNeedQty FQty, a.FRate FQtyUnit, d.FScrap,d.FPositionNo,d.FItemSize,d.FItemSuite,d.FMachinePos,isnull(e.Fname,'') FMaterielType,(case d.FOperSN when 0 then '' else cast(d.FOperSN as varchar(255)) end) FOperSN,isnull(f.Fname,'') FOperID, isnull(g.FName,'') FStockID,(case b.FIsKeyItem when 0 then '否' else '是' end) FIsKeyItem, (case h.FDeleted when 0 then '否' else '是' end) FDeleted,d.FNote,d.FNote1,d.FNote2,d.FNote3,isnull(i.fname,'') FUseStatus,a.FitemID EditFitem, CASE WHEN (d.FBeginDay BETWEEN '1900-01-01' AND '2100-01-01') THEN 0 WHEN (d.FEndDay BETWEEN '1900-01-01' AND '2100-01-01' ) THEN 0 WHEN ('1900-01-01' >= d.FBeginDay AND '2100-01-01' <= d.FEndDay) THEN 0 ELSE 1 END AS FAlterBackColor, '253, 223, 223' AS FBackColor, d.FBeginDay,d.FEndDay,d.FPercent,b.FQtyDecimal FInitDecimal,b.FQtyDecimal FQtyDecimal,
b.fstandardmanhour,q.[单价],o.fnumber fnumber1,o.fname fname1,o.fmodel fmodel1
from #Mutidata a
inner join t_icitem b on a.fitemid=b.fitemid
left outer join (select [物料代码],[物料名称],[规格型号],max([单价]) [单价] from table1
group by [物料代码],[物料名称],[规格型号] ) q on q.[物料代码]=b.fnumber
left outer join t_item c on b.funitid=c.fitemid
inner join icbomchild d on a.FBomInterid=d.finterid and a.FItemID=d.FItemID and a.FOperID=d.FOperID AND a.FEntryID=d.FEntryID
inner join icbom y on y.finterid=a.frootbomid
inner join t_icitem o on o.fitemid=y.fitemid
left outer join t_submessage e on d.FMaterielType=e.finterid
left outer join t_submessage f on d.FOperID=f.finterid
left outer join t_stock g on d.FStockID=g.FItemID
inner join t_item h on b.fitemid=h.fitemid
left outer join t_submessage i on b.fusestate=i.finterid
inner join t_submessage k on b.FErpClsID = k.FinterID
where a.FBOMLevel>0 order by a.FIndex desc

DROP TABLE #mutiParentItem
DROP TABLE #Mutidata
DROP TABLE #Errors

set @finterid=@finterid+1
end
...全文
184 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuzhifu1 2011-10-14
  • 打赏
  • 举报
回复
谢谢xiaoliaoyun终于搞定了。
xiaoliaoyun 2011-10-14
  • 打赏
  • 举报
回复

--循环外面创建一个临时表#TEMP

--循环里面把查询结果先插入到临时表
INSERT INTO #TEMP (....)
select a.FBomInterid,a.FEntryID...
from #Mutidata a
inner join t_icitem b on a.fitemid=b.fitemid

--循环外面 SELECT * FROM #TEMP
Lyongt 2011-10-14
  • 打赏
  • 举报
回复
InSert Into #T
Select A1, B1, C1 From T1
Union All
Select A2, B2, C2 From T2
Union All
Select A3, B3, C2 From T3

如果T3中没有B3字段,就用Null代替,将三个表构造成一样的输出结构再Union All 后Insert进一个表就行了
geniuswjt 2011-10-14
  • 打赏
  • 举报
回复
union all
fanzhouqi 2011-10-14
  • 打赏
  • 举报
回复
union all 把所有的记录 union 起来 在 insert into tb
--小F-- 2011-10-14
  • 打赏
  • 举报
回复
有关联字段就连接查询

没有就加自增列 然后再关联

27,580

社区成员

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

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