2017-08-02 47 views
2

輸入:乘記錄我的成熟

我有4個表中的列:

KONTO CUSTOMER_NUMBER COLLATERAL_TYPE MATURITY 

Konto的獨特價值,到期日價值,我需要繁殖。

例子:

KONTO CUSTOMER_NUMBER COLLATERAL_TYPE MATURITY 
-------------------------------------------------- 
1   000234   H    4 
2   000234   G    3 
3   212567   H    5 

我需要創建表,每KONTO乘以我的最大的成熟度和每個客戶的抵押品類型。也許它更容易說,每個抵押品應該有記錄FER每年到期

輸出:

KONTO CUSTOMER_NUMBER COLLATERAL_TYPE MATURITY 
------------------------------------------------- 
1   000234   H    1 
1   000234   H    2 
1   000234   H    3 
1   000234   H    4 
2   000234   G    1 
2   000234   G    2 
2   000234   G    3 
3   212567   H    1 
3   212567   H    2 
3   212567   H    3 
3   212567   H    4 
3   212567   H    5 

我從其他公司的同事們成功地做到這一點,但我不知道怎麼辦。

我在MS Access中使用MS Access/SQL。

謝謝你,我的英文不好

回答

0

抱歉,這是在MS Access,它不具有熱膨脹係數和窗函數真的很痛苦。一種方法是:

select KONTO, CUSTOMER_NUMBER, COLLATERAL_TYPE, 1 as MATURITY 
from t 
where MATURITY >= 1 
union all 
select KONTO, CUSTOMER_NUMBER, COLLATERAL_TYPE, 2 as MATURITY 
from t 
where MATURITY >= 2 
union all 
select KONTO, CUSTOMER_NUMBER, COLLATERAL_TYPE, 3 as MATURITY 
from t 
where MATURITY >= 3 
union all 
select KONTO, CUSTOMER_NUMBER, COLLATERAL_TYPE, 4 as MATURITY 
from t 
where MATURITY >= 4 
union all 
select KONTO, CUSTOMER_NUMBER, COLLATERAL_TYPE, 5 as MATURITY 
from t 
where MATURITY >= 5; 

當然,您將不得不重複這種模式,直到您的最大成熟度。

+0

好了,謝謝你。我的抵押品沒有超過30年的成熟期,但我有10種類型的抵押品和30000多個客戶。 「您沒有CTE或窗口功能」是什麼意思? – Dropbox13

+0

@ Dropbox13。 。 。使用這種方法,你將需要30個子查詢。 CTE和窗口函數是MS Access中不支持的SQL中的標準功能。 –

+0

我還有一個問題,我應該開新的問題或問這裏?它與這個問題相關。 – Dropbox13

1

您可以使用笛卡爾(乘)查詢:

SELECT DISTINCT 
    KontoTable.Konto, 
    KontoTable.Customer_Number, 
    KontoTable.Collateral_Type, 
    10*Abs([Deca].[id] Mod 10)+Abs([Uno].[id] Mod 10) AS Maturity 
FROM 
    MSysObjects AS Uno, 
    MSysObjects AS Deca, 
    KontoTable 
WHERE 
    ((10*Abs([Deca].[id] Mod 10)+Abs([Uno].[id] Mod 10)) 
    Between 1 And KontoTable.Maturity); 
+0

這對我來說確實很好! :)我會明天在我的原始數據庫上嘗試它。我希望它會起作用。我會讓你知道的!謝謝!!!! – Dropbox13

+0

這就是'MSysObjects'的一些創造性用法!據我所知,如果'MSysObjects'缺少大部分的ID或者包含很少的ID並且需要許多不同的成熟度,那麼猜測這不起作用,或者我錯過了什麼? –

+1

@ErikvonAsmuth:_MSysObjects_永遠不會丟失,但會保存各種ID。但是,_Distinct_,_Abs_和_Mod 10_的使用可確保從0到9的ID始終存在。如果你願意,你可以用一個簡單的「Numbers」表代替0到任何值。 – Gustav