簡體   English   中英

通過存儲過程進行復雜插入

[英]Complex insert thru Stored Procedure

我有1個具有行數據的表(無主要Ky)。 另一個帶有主鍵。

在行數據表中,我在3個perameter上有多個記錄。 在這3個性能表的所有記錄中,其他10個字段具有相同的值。

例如。

aa bb cc dd ee ff gg hh ii p1 p2  p3          V1 V2 V3 V4 

a1 b1 c1 d1 e1 f1 g1 h1 i1 zz 123 03-05-2009  5  2  3  4
a1 b1 c1 d1 e1 f1 g1 h1 i1 zz 123 03-05-2009  10 1  4  4

我想插入我的桌子就像

aa bb cc dd ee ff gg hh ii p1 p2  p3          V1 V2 V3 V4 

a1 b1 c1 d1 e1 f1 g1 h1 i1 zz 123 03-05-2009  15 3  7  8

p1,p2,p3列僅一個記錄組

有人可以建議我為此寫SP嗎?

我已經定義了一個帶有p1,p2,p3列的游標。

首先我檢查這些記錄類型是否存在於主數據庫中? 如我的主表中所示,主鍵基於這些性能。

然后我用gorup by子句寫了查詢... ??

但這是正確的方式嗎???

請指導。

提前致謝..

好吧-朋友,這里沒有光標。 不需要。 嘗試這個:

INSERT MyDetailTable (aa, bb, cc, dd, ee, ff, gg, hh, ii, p1, p2, p3, V1, V2, V3, V4)
SELECT d.aa, d.bb, d.cc, d.dd, d.ee, d.ff, d.gg, d.hh, d.ii, d.p1, d.p2, d.p3, SUM(d.V1), SUM(d.V2), SUM(d.V3), SUM(d.V4)
FROM   MyDetailTable d
JOIN   MyMasterTable m ON d.p1 = m.p1
  AND  d.p2 = m.p2
  AND  d.p3 = m.p3
GROUP BY d.aa, d.bb, d.cc, d.dd, d.ee, d.ff, d.gg, d.hh, d.ii, d.p1, d.p2, d.p3

JOIN僅用於驗證主表中是否存在PK(盡管您應該使用外鍵約束來確保是這種情況-因此,您無需檢查運行的每個語句中是否都存在主記錄針對明細表)。 分組就是這樣做-按每一行的“公共”字段分組。 而不是按aa,bb,cc ..... p1,p2,p3分組,您可以按p1,p2,p3分組,然后使用MAX(aa),MAX(bb),...如果願意,它是真的取決於你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM