1

我有一个查询,我选择了超过 15 项,因此在我的结果中获得(超过)15 列。我选择的一些东西是大的 CASE 陈述。T-SQL 当然显示你的结果比你在SELECT语句中列出的东西的顺序。

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

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

ie Don't want to change: SELECT a,b,c,d,e,fto SELECT f,d,a,b,c,e since a f can each be 5-10 lines of code

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, *

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

4

3 回答 3

5

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

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

于 2012-05-18T18:29:26.750 回答
1

不,这不存在。

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

于 2012-05-18T18:16:36.040 回答
1

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

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

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

于 2012-05-18T18:21:15.660 回答