2012-05-18 139 views
1

我有一个查询,我选择了超过15件事情,因此在结果中获得(多于)15列。我选择的一些东西是大CASE语句。 T-SQL当然会按顺序显示您的结果,而不是您在SELECT声明中列出的内容。更改结果中显示的列的顺序,而不更改选择顺序

有没有办法有不同的顺序,以帮助我对他们的检查显示的结果列,而不

一)重新排序它们是如何选择(因为我需要每一个做到这一点一次,我想比较其他两列并排侧)

即不要想改变:SELECT a,b,c,d,e,fSELECT f,d,a,b,c,e 由于自动对焦均可以是5-10行代码

b)拖动 - N在结果中彼此相邻的下一列,因为如果我想将列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)中?

+2

为什么列顺序很重要?表示层不能处理列/表达式别名并按照它想要的顺序排列它们?另外,如果您将每个表达式放在一行中,移动它们不应该很容易吗?您只需选择整行,剪切并粘贴... –

+2

SQL Server旨在存储和获取数据 - 它不是用来处理您可能想要的所有可能的显示选项。使用查询从SQL Server中获取数据 - 列的顺序是**不相关的** - 然后将其显示在前端应用程序中,如Web应用程序或任何其他应用程序,并处理列的排序** **。 –

+0

表示层?我的表达式占用了几行。想象一下激光声明 - 切割,粘贴和移动相当麻烦。 – VISQL

回答

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,您可以在“结果到网格”模式下查看结果集,只需拖放列标题即可将列滑动。

+0

有趣的双选择。我会记住这一点。 – VISQL

1

否这不存在。

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

1

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

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

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