如何在基于列的逻辑上合并SQL数据行?

时间:2012-01-23 23:03:24

标签: sql-server tsql reporting

我正在编写总帐管理系统的保证金报告,我已经掌握了基础知识,但我需要根据具体逻辑合并行,我不知道如何......

我的数据如下:

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)?或类似的东西?

1 个答案:

答案 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位数字相同则无关紧要。