【问题标题】:Changing the order in a column更改列中的顺序
【发布时间】:2020-01-30 19:08:08
【问题描述】:

输出图片,从这里我想改变顺序

`

ALTER PROCEDURE [dbo].[ResourceLoading]
@ResourceId varchar(40),
@Bucketdate varchar(40),
@EndBucketDate varchar(40)

AS
BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

Declare @Variable nvarchar(max)='',
 @ResourceTask nvarchar(max)=''

select @Variable += QUOTENAME(BucketDate)+ ',' from BucketMaster 
where BucketDate <= @EndBucketDate and BucketDate >= @Bucketdate
Order by BucketDate; 

 set @Variable = Left(@Variable,len(@Variable)-1);

 set @ResourceTask = 
'select * from 
(select UsedCapacity as value,BucketDate,ResourceId,''UsedCapacity'' As ''Resources'' 
from BucketCapacity inner join BucketMaster 
on BucketCapacity.BucketId=BucketMaster.BucketId
 and ResourceId='''+@ResourceId+''' and BucketDate <= '''+@EndBucketDate+''' and BucketDate >= '''+@BucketDate+'''
union all
select AvailableCapacity as value,BucketDate,ResourceId,''AvailableCapacity'' As ''Resources'' 
from BucketCapacity inner join BucketMaster 
on BucketCapacity.BucketId=BucketMaster.BucketId and ResourceId='''+@ResourceId+'''
 and BucketDate <= '''+@EndBucketDate+''' and BucketDate >= '''+@BucketDate+'''
union all
select  (cast (round (UsedCapacity *1.00 / AvailableCapacity,3) as float )) as value,BucketDate,ResourceId,''ResourceLoad'' As ''Resources'' 
from BucketCapacity  inner join BucketMaster 
on BucketCapacity.BucketId=BucketMaster.BucketId and ResourceId='''+@ResourceId+'''
 and BucketDate <= '''+@EndBucketDate+''' and BucketDate >= '''+@BucketDate+''') t
pivot(
sum(value) for BucketDate in ('+@Variable+')) as pivot_table;'
execute sp_executesql  @ResourceTask


END

`

在执行此代码时,我在列资源中获得 3 条记录,顺序如下:

Available capacity
Resource Load
used capacity

我想把它改成:

used capacity
Available capacity
Resource Load

谁能帮我解决这个问题

【问题讨论】:

  • 添加一些带有预期输出的示例数据。
  • ORDER BY 子句中使用case 表达式
  • 我添加了我的结果图片

标签: sql sql-server


【解决方案1】:

使用case 表达式指定所需的结果集顺序:

ORDER BY case Resources when 'used capacity' then 1
                        when 'Available capacity' then 2
                        when 'Resource Load' then 3
         end

【讨论】:

  • 它显示错误,我在哪里添加这个代码在我的代码中
  • 在产生您想要订购的结果的 SELECT 末尾。
  • 仍然显示错误。如果您不介意,您可以只显示要复制的确切行
【解决方案2】:

添加代码

    Order By (case when Resources ='used capacity' then 1 
                   when Resources ='Available capacity' then 2
                   when Resources ='Resource Load' then 3 END)

供参考 寻求帮助 CASE WHEN statement for ORDER BY clause

【讨论】:

  • 添加了 END,丢失了
猜你喜欢
  • 1970-01-01
  • 2013-09-22
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多