2012-01-23 84 views
1

我寫上我們的總帳保證金報告和我有合作的基礎,但我需要根據具體的邏輯合併行,我不知道如何...如何合併基於列的邏輯上的SQL數據行?

我的長相數據像這樣:

value1  value2  location date   category      debitamount creditamount 
2029  390   ACT  2012-07-29 COSTS - Widgets and Gadgets 0.000   3.385 
3029  390   ACT  2012-07-24 SALES - Widgets and Gadgets 1.170   0.000 

而且我的報告需要顯示兩列在一起,就像這樣:

plant date   category    debitamount creditamount 
ACT  2012-07-29 Widgets and Gadgets 1.170   3.385 

邏輯加入他們包含在值1和值2列。如果值1的最後3位數和值2的所有三位數相同,則應合併行。此外,價值1的第一位數字始終爲2,銷售額爲3,成本爲3(不確定是否重要)

IE 2029-390是向客戶銷售的小部件和小配件的貨幣,而3029-390是錢花在從供應商處購買Widget和小工具。

哪有我這麼這個編程在我的存儲過程? (SQL Server 2008 R2中)

編輯:我想3000的加載到一個變量表和2000年的到另一個,再加入兩個在VALUE2和右(值1,3)?或類似的東西?

回答

1

嘗試這種情況:

SELECT RIGHT(LTRIM(RTRIM(值1)),3),值2,MAX(位置), MAX(日期),MAX(類別),SUM(debitamount), SUM(creditamount)FROM表1 GROUP BY RIGHT(LTRIM(RTRIM(值)),3),數值2

這將總結信用證金額和借方金額。它將選擇其他列中的最大字符串值,假設它們總是相同,當value2和value1的最後3位數字相同時,它們無關緊要。

+0

如果有幫助,請記住這是正確的。如果您有任何問題,請告訴我,我會提供反饋意見。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

感謝您的幫助,我真的不知道我可以使用MAX()。最後,我確實將3000和2000加載到他們自己的表變量中,然後使用您的方法將它們組合起來。像魅力一樣工作。謝謝!!! – bluehiro

+0

我想唯一的問題,我可以添加的內容是這樣的:我如何才能讓類別列總是選擇「銷售 - 小工具和小工具」,而不是選擇有時成本和其他時間的銷售。報告數據是準確的,但類別名稱的前7個字符有時是有誤導性的。 – bluehiro