有谁可以帮我把这3个视图创建过程合成一个视图创建过程 ( 积分: 50 )

  • 主题发起人 主题发起人 channelxp
  • 开始时间 开始时间
C

channelxp

Unregistered / Unconfirmed
GUEST, unregistred user!
首先是视图SemiPcView,它的作用是把SemiSkTable里面的Amount与Rate字段进行相成,得出一个新字段OP,代码如下:<br><br>ALTER&nbsp;&nbsp;&nbsp;VIEW&nbsp;dbo.SemiPcView<br>AS<br>SELECT&nbsp;dbo.SemiSkTable.*,&nbsp;dbo.SemiTable.SemiName&nbsp;AS&nbsp;SemiName,<br>&nbsp;&nbsp;&nbsp;&nbsp;(SemiSkTable.amount*SemiSkTable.rate)&nbsp;AS&nbsp;OP,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbo.SemiTable.Specs&nbsp;AS&nbsp;Specs,&nbsp;dbo.KilnTable.KilnName&nbsp;AS&nbsp;KilnName<br>FROM&nbsp;dbo.SemiSkTable&nbsp;INNER&nbsp;JOIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbo.SemiTable&nbsp;ON&nbsp;dbo.SemiSkTable.SemiID&nbsp;=&nbsp;dbo.SemiTable.SemiID&nbsp;INNER&nbsp;JOIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbo.KilnTable&nbsp;ON&nbsp;dbo.SemiSkTable.KilnID&nbsp;=&nbsp;dbo.KilnTable.KilnID<br><br>然后是SemiPcTotalView,它的作用是把刚才SemiPcView里面的Amount与OP字段根据SemiID进行求合再次生成2个新字段sum(Amount)&nbsp;as&nbsp;Amount&nbsp;和&nbsp;sum(OP)&nbsp;AS&nbsp;OP1,代码如下:<br><br>ALTER&nbsp;&nbsp;&nbsp;&nbsp;VIEW&nbsp;dbo.SemiPcTotalView<br>AS<br>SELECT&nbsp;SemiID,&nbsp;SemiName,&nbsp;Specs,&nbsp;sum(Amount)&nbsp;as&nbsp;Amount,&nbsp;sum(OP)&nbsp;AS&nbsp;OP1<br>FROM&nbsp;dbo.SemiPcView<br>group&nbsp;by&nbsp;SemiID,&nbsp;SemiName,&nbsp;Specs<br><br>最后就是产生我的目标视图SemiStView,就是在SemiPcTotalView的基础上,把Amount和OP1字段进行像除,生成字段Rate,代码如下:<br><br>ALTER&nbsp;&nbsp;&nbsp;VIEW&nbsp;dbo.SemiStView<br>AS<br>SELECT&nbsp;SemiID,&nbsp;SemiName,&nbsp;Specs,&nbsp;Amount,&nbsp;(OP1/Amount)&nbsp;as&nbsp;Rate<br>FROM&nbsp;dbo.SemiPcTotalView<br><br>既然3个视图是有关联的,我现在想把它们合成一个视图创建过程,直接生成SemiStView
 
最简单的&nbsp;直接把你的3段SQL复合进去就可以了<br>ALTER&nbsp;&nbsp;&nbsp;VIEW&nbsp;dbo.SemiStView<br>AS<br>SELECT&nbsp;SemiID,&nbsp;SemiName,&nbsp;Specs,&nbsp;Amount,&nbsp;(OP1/Amount)&nbsp;as&nbsp;Rate<br>FROM&nbsp;<br>(<br>&nbsp;&nbsp;SELECT&nbsp;SemiID,&nbsp;SemiName,&nbsp;Specs,&nbsp;sum(Amount)&nbsp;as&nbsp;Amount,&nbsp;sum(OP)&nbsp;AS&nbsp;OP1<br>&nbsp;&nbsp;FROM&nbsp;<br>&nbsp;&nbsp;(<br>SELECT&nbsp;dbo.SemiSkTable.*,&nbsp;dbo.SemiTable.SemiName&nbsp;AS&nbsp;SemiName,<br>&nbsp;&nbsp;&nbsp;&nbsp;(SemiSkTable.amount*SemiSkTable.rate)&nbsp;AS&nbsp;OP,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbo.SemiTable.Specs&nbsp;AS&nbsp;Specs,&nbsp;dbo.KilnTable.KilnName&nbsp;AS&nbsp;KilnName<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;dbo.SemiSkTable&nbsp;INNER&nbsp;JOIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbo.SemiTable&nbsp;ON&nbsp;dbo.SemiSkTable.SemiID&nbsp;=&nbsp;dbo.SemiTable.SemiID&nbsp;INNER&nbsp;JOIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbo.KilnTable&nbsp;ON&nbsp;dbo.SemiSkTable.KilnID&nbsp;=&nbsp;dbo.KilnTable.KilnID<br>&nbsp;&nbsp;)&nbsp;b<br>&nbsp;&nbsp;group&nbsp;by&nbsp;SemiID,&nbsp;SemiName,&nbsp;Specs<br>)&nbsp;a
 
接受答案了.
 
后退
顶部