我有兩個表,TblVal
和TblAdj
。SQL Server通過另一個表調整列中的每個值
在TblVal
我有一堆,我需要根據TblAdj
對於給定TblVal.PersonID
和TblVal.Date
調整,然後在一些ViewAdjustedValues
返回的值。我必須僅應用那些TblAdj.Date >= TblVal.Date
的調整。
問題是,由於所有的調整都是減法或除法,因此需要按順序進行調整。下面是表的結構:
TblVal
:PersonID, Date, Value
TblAdj
:PersonID, Date, SubtractAmount, DivideAmount
我想回到ViewAdjustedValues
:PersonID, Date, AdjValue
我能做到這一點,而無需使用WHILE
循環和IF
塊通過TblAdj
迭代根據需要減去或分開?是否有一些嵌套的SELECT表魔法可以執行,速度會更快?
爲什麼不將轉換爲相減?聚合起來要容易得多。 – iamsleepy 2013-03-25 23:49:17
如果不知道將要應用的值,則不能將差值轉換爲差值。例如,如果除以2,則不論固定減法的數目減半,固定減法總是具有除以2的相同效果。 – 2013-03-26 00:34:56
你說「因爲所有的調整要麼是**粗體** ** **粗體**減法**粗體**或者**粗體**除法」「其他」值是什麼,它是NULL嗎?他們都可以是NULL?另外,我懷疑TblAdj表的行數少於TblVal表,這是真的嗎?你也需要更新表格,或者你需要打印出結果。最後一件事,是否要在更新完成後從TblAdj中刪除元組? – Marichyasana 2013-03-27 01:28:11