(請注意,我需要一個SQL Server 2005解決方案)TSQL排序聯盟
我有一個UNION
查詢,其中,第一部分以特定的順序返回多行,而第二部分返回一個單行,它必須是結果集的最後一行。
到目前爲止,我發現的最簡單的方法是包含一個額外的「排序」列,但是我不希望此列與數據集一起返回。
請注意,這個例子中的一列,但真正的查詢有許多列,通過動態查詢建...
SELECT [TITLE],
(SELECT COUNT(*) FROM dbo.[OTHERTABLE] WHERE ...) AS [VALUE],
0 AS [EXTRAORDER]
FROM dbo.[LOOKUPTABLE]
UNION
SELECT 'Total',
(SELECT COUNT(*) FROM dbo.[OTHERTABLE]),
1 AS [EXTRAORDER]
ORDER BY [EXTRAORDER], [TITLE]
我怎樣才能創造這讓所有的列排除EXTRAORDER
(最好是沒有手動列出所有需要的列)?
內部提供整個'UNION' *來工作(不幸的是,通過複製所有列),我相信所有支持的解決方案都符合您的要求。也就是說,'UNION'首先是排序列,然後是'SELECT'最後(頂部/最外部),排除列列表中的排序列,但仍然在最後一個SELECT中使用它作爲ORDER BY。 AFAIK,沒有其他方法可以在未返回的列上獲得有效的「ORDER BY」。 – RBarryYoung
感謝您的確認@RBarryYoung,我不認爲這將有可能做到這一點,沒有列出其中一列 – freefaller