-6

我想创建一个 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
4

1 回答 1

1

我假设Time列值是固定的,即1,3,5,7.

下面的 Query 类似于您想要实现的目标。

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

这是您在您的问题中提到的具有类似模式的 SQLFiddel DEMO 。

于 2013-07-11T09:10:15.930 回答