2013-04-25 119 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))