2013-07-11 83 views
-6

我想創建一個SQL查詢,並格式化該查詢的輸出。用於格式化輸出的SQL查詢

我的表看起來像這樣:

Time Amount Id iMId 
--------------------------------- 
    1  2500 1 4 
    3  5000 1 4 
    5  10000 1 4 
    7  20000 1 4 
    1  2500 2 8 
    3  5000 2 8 
    5  10000 2 8 
    7  20000 2 8 

我要在以下格式的輸出: -

Id iMId Time1 Time2 Time3 Time4 
---------------------------------- 
1 4 1  3  5  7 
     2500 5000 10000  20000 
2 8 1  3  5   7 
     2500 5000 10000 20000 

我已經試過:

SELECT sProfileId,iMerchantId,'Day1','Day2','Day3','Day4',dAmount 
FROM (SELECT RM.sProfileId,RM.iMerchantId,RC.iDays,RC.dAmount 
     FROM tblRuleByMerchant RM 
     JOIN tblAlertRuleCummulativeData RC ON (RM.sProfileId=RC.sProfileId)) AS d 
PIVOT (max(RM.sProfileId) FOR RM.iMerchantId IN ('Day1','Day2','Day3','Day4')) piv 
+0

我假設你的意思是你想格式化輸出..而不是查詢。查詢格式不會改變它的運行方式。 –

+0

此外,爲了讓您的問題得到解答,您必須向我們展示您在編寫查詢(查找解決方案)時的努力,否則您的問題將很有可能被降低並關閉。 –

+0

請說明你做了什麼。至少2或3行將幫助我們在起點 –

回答

1

我認爲Time列值是固定的,並且是1,3,5,7

下面的查詢類似於你想要實現的。

select distinct T.id,T.iMid, 
    (select amount from myTable 
    where time = 1 and id = T.id and iMid = T.iMid) as Time1, 
    (select amount from myTable 
    where time = 3 and id = T.id and iMid = T.iMid) as Time2, 
    (select amount from myTable 
    where time = 5 and id = T.id and iMid = T.iMid) as Time3, 
    (select amount from myTable 
    where time = 7 and id = T.id and iMid = T.iMid) as Time4, 
    2 as level 
    from myTable T 
union All 
select distinct T.id,T.iMid,1,3,5,7,1 
    from myTable T 
order by id,level 

Here is the SQLFiddel DEMO與你在你的問題中提到類似的模式。