簡體   English   中英

SQL Server 將所有行選擇為具有重復列名的單列

[英]SQL Server select all rows into single column with repeating column names

我有這個代碼和它的臨時表,所以你可以運行它。

    create table #hourly_sales(
    id int identity(1,1),
    tenant_code varchar(13),
    hour_code int,
    net_sale_per_hour decimal(18,2)
    )


    insert into #hourly_sales(tenant_code,hour_code,net_sale_per_hour)
    values('1234567890000',1,200),('1234567890000',2,500),('1234567890000',3,400)


    select * from #hourly_sales

    drop table #hourly_sales    

這會給你這個輸出

  id          tenant_code   hour_code   net_sale_per_hour
  ----------- ------------- ----------- -------------------
  1           1234567890000 1           200.00
  2           1234567890000 2           500.00
  3           1234567890000 3           400.00

我希望他們都在一個列中選擇租戶代碼分組並匯總凈銷售額

我的目標:

  id          tenant_code   hour_code   net_sale_per_hour hour_code net_sale_per_hour
  -----------------------------------------------------------------------
  1           1234567890000 1           200.00            2         500     

  hour_code net_sale_per_hour   total_net_sale
  -----------------------------------------------------------------------
  3         400                 

等等

我的嘗試:

    declare @sum decimal(18,2);
    set @sum = (select sum(net_sale_per_hour) from #hourly_sales);

    select TOP 1
        id,
        tenant_code,
        hour_code,
        net_sale_per_hour,
        @sum
    from #hourly_sales

這就是我為你得到的一切,我需要你的幫助。

有時,如果您的列數有限,只有 24 個,那么將其拼寫出來會更容易。

select tenant_code, 
    sum(case when hour_code = 1 then net_sale_per_hour else null end) as '01',
    sum(case when hour_code = 2 then net_sale_per_hour else null end) as '02',
    sum(case when hour_code = 3 then net_sale_per_hour else null end) as '03'
    from #hourly_sales
    group by tenant_code

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM