2013-04-25 120 views
0

我有一个关于查询会计数据的问题。奇数/偶数中的SQL Server Row_number?

例如,样本数据是显示象下面

表:Table_Test

Date  Amount 
2013-01-01 12.00 
2013-01-02 13.00 

输出应该是这样的:

Date  Account  Debit Credit 
2013-01-01 Abccompany  12.00 
2013-01-01 Vendorcompany   12.00 
2013-01-02 Abccompany  13.00 
2013-01-02 Vendorcompany   13.00 

起初,我想使用联合声明,因为可能输出sequece不是很重要,并且示例sql显示如下

Select 
    Date as 'Date', 
    'Abccompany' as 'Account', 
    Amount as 'Debit', 
    '0' as credit 
from Table_Test 

union 

select 
    Date as 'Date', 
    'VendorCompany' as 'Account', 
    '0' as 'Debit', 
    Amount as credit 
from Table_Test 

输出:

Date  Account  Debit Credit 
2013-01-01 Abccompany  12.00 
2013-01-02 Abccompany  13.00 
2013-01-01 Vendorcompany   12.00 
2013-01-02 Vendorcompany   13.00 

,但它似乎在我显示输出到我的PIC,他提到这是错误的顺序对他们很重要(用于导出到他们的系统)

从我的脑海里想出了什么是使用T-Sql来操纵这可能会提供一个像IsDebit和可能的row_number(第一个SQL中的奇数,第二个SQL上的偶数然后联合并在其上创建了一些逻辑?可能吗?)

有人能够提供一些想法如何处理这个?

回答

2

像这样的东西应该工作:

Select 
Date as 'Date', 'Abccompany' as 'Account', Amount as 'Debit', '0' as credit, 
ROW_NUMBER() OVER (ORDER BY Date) * 2 as rn 
from Table_Test 
union all 
Date as 'Date', 'VendorCompany' as 'Account', '0' as 'Debit', Amount as credit, 
ROW_NUMBER() OVER (ORDER BY Date) * 2 + 1 
from Table_Test 
ORDER BY rn 

虽然可能需要在ORDER BY条款更多的列把事情明确的(这是棘手的一点点告诉你已经给出的有限例子)

我也切换到使用UNION ALL,因为结果集产生了已经不同了。

+0

我试过了,谢谢 但第二个查询row_number()Over(按日期排序)* 2 +1应该是-1。 – Worgon 2013-04-26 02:29:52

1

尝试在选择使用此:

(ROW_NUMBER() OVER (ORDER BY Abccompany ASC))