0

私はこのようなストアドプロシージャを持っています

ALTER procedure [dbo].[performance] 
    @startdate nvarchar(100), 
    @enddate nvarchar(100) 
as begin
   declare @date1 nvarchar(100) = convert(varchar, @startdate+' 00:00:00.000', 120)
   declare @date2 nvarchar(100) = convert(varchar, @enddate+' 23:59:59.000', 120) 

   set NOCOUNT on;

   select 
       l.LocName, v.Vtype,
       SUM(convert(numeric(18, 2), 
       DATEDIFF(MI, t.DelDate, t.Paydate))) as TotalDiff,
       [dbo].[testfunctionstacknew](CONVERT(decimal(10,1), AVG( CONVERT(NUMERIC(18,2), DATEDIFF(SS,t.Paydate,t.DelDate) ) )))  as Average
   from 
       Transaction_tbl t 
   left join 
       VType_tbl v on t.vtid = v.vtid 
   left join 
       Location_tbl l on t.Locid = l.Locid 
   where 
       t.Locid in (select t1.Locid from Transaction_tbl t1) 
       and dtime between @date1 and @date2 
       and Status = 5 
   group by 
       v.Vtype, l.LocName, l.Locid 
   order by 
       l.Locid
end

私はこのように出ています:

locName   Vtype    TotalDiff   Average
Address   Normal     15         00:10:01
Adress    vip         18        00:08:01
Address   VVIP         9         00:04:00
Address    Pass        20        00:15:00
Goldsouk    normal      45       00:18:08
Goldsouk      vip        17       00:11:36
Fashion       vip        78       00:35:25
Fashion        VVip       2      00:01:00

しかし、私は別のモデルで出力が必要です:私はこのような出力を期待していました:

LocName     Normal      Vip      VVip        Pass        Staff
Address     00:10:01    00:08:01  00:04:00    0           0
GoldSouck    00:18:08   00:11:36   0          0           0
Fashion      0          00:35:25   00:01:00   0           0 

ピボットを使用する必要があることを知っているように出力するには..しかし、これを使用する方法がわかりませんか? 誰かが知っているなら、私が見つけるのを手伝ってください..私は私のvtypeをハードコードすることはできません..実際のvtypeは動的です.それはVtypeテーブルから来ています

4

1 に答える 1

0

ピボットは必要ありません。4 つのCASEステートメントが必要です。

SELECT  LocName
        ,MAX(CASE WHEN Vtype = 'Normal' THEN Average ELSE 0 END) as Normal
        ,MAX(CASE WHEN Vtype = 'Vip' THEN Average ELSE 0 END) as Vip
        ,etc
...
GROUP BY
        LocName
于 2013-09-11T12:32:32.667 に答える