SQL Query for generating matrix like output querying related table in SQL Server

后端 未结 3 1789
臣服心动
臣服心动 2020-12-29 13:22

I have three tables:
Product

ProductID   ProductName  
1           Cycle  
2           Scooter  
3           Car  

<

3条回答
  •  借酒劲吻你
    2020-12-29 14:12

    create table #Product (ProductID   int,ProductName  varchar(15))
    insert into #Product values (1,'Cycle')
    insert into #Product values (2,'Scooter')
    insert into #Product values (3,'Car')
    
    create table #Customer (CustomerID   int, CustomerName  varchar(30))
    insert into #Customer values (101,'Ronald')
    insert into #Customer values (102,'Michelle')
    insert into #Customer values (103,'Armstrong')
    insert into #Customer values (104,'Schmidt')
    insert into #Customer values (105,'Peterson')
    
    create table #Transactions (TID int,ProductID int,CustomerID int, TranDate smalldatetime,Amount decimal(18,2))
    insert into #Transactions values (10001,1,101,'01-Jan-11',25000.00)
    insert into #Transactions values (10002,2,101,'02-Jan-11',98547.52)
    insert into #Transactions values (10003,1,102,'03-Feb-11',15000.00)
    insert into #Transactions values (10004,3,102,'07-Jan-11',36571.85)
    insert into #Transactions values (10005,2,105,'09-Feb-11',82658.23)
    insert into #Transactions values (10006,2,104,'10-Feb-11',54000.25)
    insert into #Transactions values (10007,3,103,'20-Feb-11',80115.50)
    insert into #Transactions values (10008,3,104,'22-Feb-11',45000.65)
    
    with temp as 
    (
    select cus.CustomerName,pro.ProductName, sum(trans.Amount) as Amount from #Transactions as trans
    inner join #Customer as cus on trans.CustomerID = cus.CustomerID
    inner join #Product as pro on trans.ProductID = pro.ProductID
    group by cus.CustomerName,pro.ProductName
    )
    
    select CustomerName,isnull([Car],0)Car, isnull([Cycle],0)Cycle,isnull([Scooter],0) as Scooter, isnull([Car],0)+isnull([Cycle],0)+isnull([Scooter],0)as Total  from temp
    pivot (
    sum(Amount) for ProductName in ([Cycle],[Scooter],[Car])
    )pot*
    

提交回复
热议问题