台灣最大程式設計社群網站
線上人數
925
 
會員總數:245959
討論主題:189543
歡迎您免費加入會員
討論區列表 >> MS SQL >> 不同之選項重新排列資料
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
不同之選項重新排列資料
價值 : 100 QP  點閱數:734 回應數:7
樓主

HB
中級專家
2978 74
3647 350
發送站內信

採用MS SQL 2005 express系統。

有一資料表,想依不同之選項重新排列資料,即Type <> CASE_1及CASE_2,依Type, Option, Key排列取資料;但Type = CASE_1及CASE_2時,依Type, Option, Description排列取資料,請問T-SQL如何修正?謝謝!

select [Type], [Option], [Description] from
(select * from [Spec] where [Type] <> 'CASE_1' and [Type] <> 'CASE_2'
order by [Type], [Option], [Key])
join
(select * from [Spec] where [Type] = 'CASE_1' or [Type] = 'CASE_2'
order by [Type], [Option], [Description])





搜尋相關Tags的文章: [ 資料排列 ] ,
本篇文章發表於2016-11-20 15:40
1樓
最有價值解答

Linka
檢舉此回應
Try

本篇文章回覆於2016-11-21 08:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
我比較懶 我的處理方式

把資料insert 到temp table 再插入一個欄位排序 例如下

alter table #temp add 排序 int null

update #temp set 排序=1 where 業務='其他'
update #temp set 排序=2 where 業務='合計'

select
資料年月,業務,標案,一般,活動,其他,工地
from #temp(nolock) order by 排序
本篇文章回覆於2016-11-21 16:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

HB
檢舉此回應
感謝2位大大的協助說明。

To 真的有點難:提供的方式,正式目前處理的方式,上來求教,是希望有更好的方式。

To Linka:此方式符合需求,但出現一點問題,說明如下:

Key的型別是Float,Description的型別是nvarchar,執行時,出現『將資料類型從 nvarchar 轉換到 float 時發生錯誤』的錯誤訊息,可否再次協助說明?
謝謝!
本篇文章回覆於2016-11-21 17:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
既然 Description的型別是nvarchar 那你distinct 看一下 是怎麼沒辦法convert的成float 那就事先update 成你要的數據
本篇文章回覆於2016-11-21 19:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

HB
檢舉此回應
感謝說明,但是無法理解內容,因為對MS SQL不是很熟,實在無法得知為何『沒辦法convert的成float』?
本篇文章回覆於2016-11-21 20:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
不錯的參考

Linka
檢舉此回應
把 key convert 成 nvarchar 試試

本篇文章回覆於2016-11-22 08:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

HB
檢舉此回應
感謝Linka的再次說明,問題已解決。
本篇文章回覆於2016-11-22 10:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.