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

时间:2012-05-18 18:10:57

标签: sql-server sql-server-2008 tsql resultset

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

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

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

即。不想更改:SELECT a,b,c,d,e,fSELECT f,d,a,b,c,e   因为a-f每个都可以是5-10行代码

b)将结果中的drag-n-drop列彼此相邻,因为如果我希望第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, *

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

3 个答案:

答案 0 :(得分: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 ....

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

如果您使用的是SSMS ,则可以在“结果到网格”模式下查看结果集,只需拖放列标题即可滑动列。

答案 1 :(得分:1)

不,这不存在。

如果您不喜欢移动case语句,可以将查询放入您选择的视图中,然后您将简化选择列表,但这对我来说似乎是浪费精力。

答案 2 :(得分:1)

我不认为此功能是任何SQL变体的一部分。

如果您使用SQL IDE查看结果集,您可以将所需的列拖动到一起,我曾经在SSMS中执行此操作。

否则安倍的答案就是你所能做的。