在某工廠的生產過程中,有個螺栓擰緊的操作,針對不同的工序分不同的步數。如,第1步1個,第二步3個,第三步5個。這樣在記錄的時候,就會記錄出以下表(名為pbt),所有欄位均為int型,結構和資料如下所示:
pbt_id
pbt_productid
pbt_opstationid
pbt_boltid
pbt_stepid
pbt_boltcount41
2111
5123
2161
2431
7135
1181
3722
91410
14101
511119
111611
111121
71617
131818
12141
92912
1511034110
1611135110
171134121
181134232
2611311212
1911443120
2011544111
211164616
221174711
231174825
241174934
251175041
2711811411
2811911913
2911912022
3011912131
3112012838
3212012911
3312013021
3412113211
3512113322
3612113431
2351
2213611
2361
2313813
2371
2314321
2381
24145122
由於現在要對擰緊的螺栓加上起始編號,如前面三步工序的螺栓中, 第1步的起始編號是0,第2步的起始編號是為第1步的總數,即1,第3步的起始編號是第1步+第2步的總數,即4,以此類推。在上表中,即判斷相關pbt_opstationid的記錄,在不同的pbt_stepid下的 boltcount的順序。比如,當pbt_opstationid為2時,有以下三條資料
pbt_id
pbt_productid
pbt_opstationid
pbt_boltid
pbt_stepid
pbt_boltcount41
2111
5123
2161
2431
對應的pbt_stepid分別為1,2,3。
由於每次都要計算,比較麻煩同時也降低伺服器執行效率,所以現在希望追加乙個字型直接儲存起始編號資訊。
為了起始編號,我們追加了乙個pbt_bolttotalcount欄位。在計算時,我們只需要計算當相同pbt_opstationid下,對於當前pbt_stepid,所有小於它的記錄的boltcount求和。解決的sql語句如下:
declare
@opid
int,
@stepid
intset
@opid=1
set@stepid=1
while
@opid
<=
24begin
set@stepid=1
while
@stepid
<=
4begin
update
[cvinet_test]
.[dbo]
.[productbolttightening]
set pbt_bolttotalcount = isnull(
(select
sum(pbt_boltcount)
from productbolttightening where pbt_opstationid =
@opid
and productbolttightening.pbt_stepid <
@stepid),
0)where pbt_opstationid =
@opid
and pbt_stepid =
@stepid
set@stepid
=@stepid+1
endset
@opid
=@opid+1
end
在以上的sql中,使用了雙層迴圈,分別對不同的pbt_opstationid和pbt_stepid進行計算。
執行後,結果如下所示:
pbt_id
pbt_productid
pbt_opstationid
pbt_boltid
pbt_stepid
pbt_boltcount
pbt_bolttotalcount41
2111
0512
3211
6124
3127
1351
1081
3722
1914
10140
101511
119011
16111
110121
71617
01318
18120
141929
12015
110341
100161
1135110
017113
41212
181134232
326113
112120
1911443120
020115
441110
211164616
022117
47110
231174825
124117
49346
251175041
1027118
114110
2811911913
029119
120223
3011912131
531120
128382
3212012911
033120
130211
3412113211
035121
133221
3612113431
3235122
136110
2361
2313813
0237123
143213
2381
24145122
0
使用API對登錄檔進行讀寫
首先明確一下hkey的概念。從字面上看它是乙個key的控制代碼。讀寫位置的確定就靠它了。開啟登錄檔編輯器 regedit 裡面的hkey current user還有hkey local machine這些是不是hkey控制代碼呢?必然是啊,都hkey打頭了.明確這個之後,一些問題就好解決了。所有的...
使用基準值對鍊錶進行分割槽
1.問題描述 編寫 以給定值x為基準將鍊錶分為兩部分,所有小於x的結點排在大於或等於x的結點之前 給定乙個鍊錶的頭結點 listnode phead,請返回重新後的鍊錶的頭指標 注意 分割以後原來的資料順序不變 不要開闢新的空間,即不要新建節點 2.我們可以定義幾個指標把給出的鍊錶分為兩部分,左邊的...
T SQL 訪問遠端資料庫並對其資料表進行操作
概述 很多時候我們需要在.net應用程式中使用一條sql語句來訪問來自不同伺服器 不同資料庫中的不同的表,實現方法有很多。我們可以在.net應用程式中建立資料訪問層,使用ado.net entity framework將我們的資料庫以及資料表抽象成應用程式物件,進而在程式裡使用code來對不同庫當中...