2012-05-18 156 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中執行此操作。

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