更改结果中显示的列的顺序,而不更改选择顺序

VIS*_*SQL 1 t-sql sql-server resultset sql-server-2008

我有一个查询,我选择了超过15件事,因此在我的结果中得到(超过)15列.我选择的一些东西是大CASE陈述.当然,T-SQL按顺序显示结果,而不是在SELECT语句中列出内容.

有没有办法让结果列以不同的顺序显示,以帮助我审查它们,而不是

a)重新排序它们的选择方式(因为每次我想要并排比较其他两列时我都需要这样做)

即不要想改变:SELECT a,b,c,d,e,fSELECT f,d,a,b,c,e ,因为AF可以各自为5-10行代码

b)将结果拖放到彼此旁边的列中,因为如果我希望第2列位于第9列和第14列的旁边,并且所有三列都在结果表的末尾,那么那就是拖得很多.

c)知道所选内容的列号而不是列名

我正在寻找的东西类似于:

Select
    vi.Name
   ,vi.Height
   ,vi.Power
   ,case when tt.losses < 3
         then 'Y'
         else 'N'
    end as MasteryKen
   ,tt.blahnum
   ,vi.blahtext
   ,vi.blahdate
   ,vi.blahcalc
   ,tt.blahflag
   ,vi.blahflag
   ,vi.blahcompare

From SenshiVitalInfo vi 
Join TatakauTable tt 
  on vi.namecd=tt.namecd

OrderOutputResults by tt.blahflag, vi.blahflag, *
Run Code Online (Sandbox Code Playgroud)

T-SQL(SQL Server 2008)中是否存在执行最后一行的函数?

KM.*_*KM. 5

TSQL中没有"移动"列的功能,除了编辑SELECT列表顺序之外,这是您可以做的最好的:

SELECT
    d.Name
   ,d.Height
   ,d.Power
   ,d.MasteryKen   --<<can now move around single lines
   ,d.blahnum
   ,d.blahtext
   ,d.blahdate
   ,d.blahcalc
   ,d.blahflag
   ,d.blahflag
   ,d.blahcompare
FROM (Select
          vi.Name
         ,vi.Height
         ,vi.Power
         ,case when tt.losses < 3
               then 'Y'
               else 'N'
          end as MasteryKen
         ,tt.blahnum
         ,vi.blahtext
         ,vi.blahdate
         ,vi.blahcalc
         ,tt.blahflag
         ,vi.blahflag
         ,vi.blahcompare

      From SenshiVitalInfo vi 
      Join TatakauTable tt 
        on vi.namecd=tt.namecd
     ) d
--ORDER BY ....
Run Code Online (Sandbox Code Playgroud)

您可以将现有查询包装在派生表中,然后可以在其中移动所需的单行列名称.只需确保将任何ORDER BY移出派生表.

如果您正在使用SSMS,则可以在"结果到网格"模式下查看结果集,只需拖放列标题即可滑动列.