台灣最大程式設計社群網站
線上人數
949
 
會員總數:245217
討論主題:189089
歡迎您免費加入會員
討論區列表 >> MS SQL >> 欄位定義在其他table, SELECT資料,預存程序的寫法請教
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
欄位定義在其他table, SELECT資料,預存程序的寫法請教
價值 : 50 QP  點閱數:323 回應數:3

樓主

阿哲
門外漢
0 1
22 0
發送站內信

我有一個總表叫 BASIC

另一個table, 定義該TYPE有哪些欄位的 TYPE_SETTING



因為總表算是一個大雜燴的TABLE,把相關的資料,但欄位八成不一樣的資料類型放一起
目前一般給User的功能,已可以用寫程式的方式來完成

但現在要寫預存程序
想用SELECT GET_SAMPLE_DATA('重量') WHERE A >=20 之類的語法來得到,下面的結果


想用SELECT GET_SAMPLE_DATA('尺寸') WHERE D >=20 之類的語法來得到,下面的結果


網路上,好像找不到相似的狀況
請問這要怎麼寫呢?


搜尋相關Tags的文章: [ 預存程序 ] , [ 欄位定義在其他table ] ,
本篇文章發表於2019-06-04 16:13
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

roar
檢舉此回應
建2個資料表,basic及basictype,basic資料欄位同上,basictype資料欄位為IDLINK,TYPE,LANG_TW
select a.ID, a.NAME,a.TYPE,a.D as 外箱, a.E as 內箱 from basic a join BASICTYPE b
on a.ID=b.IDLINK
where a.D>20
select a.ID, a.NAME,a.TYPE,a.A as 樣品重, a.B as 外箱重,a.C as 總重 from basic a join BASICTYPE b
on a.ID=b.IDLINK
where a.A>20
本篇文章回覆於2019-06-05 20:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

小發
檢舉此回應
個人覺得難度在於你要將 SETTING 表中欄位的值變成COLUMNNAME , 如果 Basic 表可以重新設計的話 , 或許可用 pivot 處理
/*
1.Basic 資料表改記直式資料
2.使用pivot對應出 #TYPE_SETTING 的欄位,直式資料轉成橫式
3.如果寫成動態sql的話,可以用 stuff 來決定要顯示的欄位

參考:
https://stackoverflow.com/questions/15773765/sql-server-2012-pivot-without-aggregate
*/
本篇文章回覆於2019-06-18 12:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

瑪格麗特
檢舉此回應
既然BASIC TABLE的 A~E欄位意思沒有重複,何不直接SELECT就好,
SELECT GET_SAMPLE_DATA('重量') WHERE A >=20

SELECT ID,Name,TYPE,樣品重=A,外箱重=B,總重=C
FROM BASIC
WHERE WHERE A >=20

SELECT GET_SAMPLE_DATA('尺寸') WHERE D >=20
SELECT ID,Name,TYPE,外箱=D,內箱=E
FROM BASIC
WHERE WHERE D >=20
本篇文章回覆於2019-09-02 15:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

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