我正在编写总帐管理系统的保证金报告,我已经掌握了基础知识,但我需要根据具体逻辑合并行,我不知道如何......
我的数据如下:
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
加入它们的逻辑包含在value1和value 2列中。如果值1的最后3位数和值2的所有三位数相同,则应组合行。此外,值1的第1位数字将始终为2,销售额为3(不确定是否重要)
IE 2029-390是用于向客户销售Widgets和Gadgets的资金,而3029-390是用于从供应商处购买Widgets和Gadgets的资金。
如何在存储过程中以编程方式进行此操作? (SQL Server 2008 R2)
编辑:我是否将3000's加载到一个变量表中,将2000's加载到另一个变量表中,然后将两个加载到value2和right(value1,3)?或类似的东西?
答案 0 :(得分:1)
试试这个:
SELECT RIGHT(LTRIM(RTRIM(value1)),3),value2,MAX(位置), MAX(日期),MAX(类别),SUM(debitamount),SUM(creditamount)FROM table1 GROUP BY RIGHT(LTRIM(RTRIM(value1)),3),value2
它将贷记金额和借方金额相加。它将选择其他列中的最大字符串值,假设它们在value2时始终相同,而value1的最后3位数字相同则无关紧要。