iT邦幫忙

0

MS SQL2000查詢&剖析語法正確,但匯出EXCEL檔失敗

Dear All
請教各位前輩
小弟在操作MS SQL2000的匯出檔案至EXCEL功能
碰到了錯誤https://ithelp.ithome.com.tw/upload/images/20171207/20011133P0t1uDLtPC.jpg
https://ithelp.ithome.com.tw/upload/images/20171207/20011133kkFGjFvnhp.jpg
但是,在查詢以及剖析語法的時候是沒問題的
https://ithelp.ithome.com.tw/upload/images/20171207/200111331OjNdsieJF.jpg
試過了以下三種寫法都是一樣問題:
---1
Select a.商品貨號, a.商品名稱, b.庫存數量, c.庫存數量, d.庫存數量 from 商品基本檔 a
Inner join (select * from 商品庫存檔 where 門市編號='1001') b on a.商品貨號=b.商品貨號
Inner join (select * from 商品庫存檔 where 門市編號='1003') c on a.商品貨號=c.商品貨號
Inner join (select * from 商品庫存檔 where 門市編號='1005') d on a.商品貨號=d.商品貨號
Where a.大類編號='8' And (b.庫存數量 < = 0 And c.庫存數量 > = 0 And d.庫存數量 >= 1)
Order by a.商品貨號
---2
Select a.商品貨號, a.商品名稱, b.庫存數量, c.庫存數量, d.庫存數量 from 商品基本檔 a
Inner join (select 商品貨號, 庫存數量 from 商品庫存檔 where 門市編號='1001') b on a.商品貨號=b.商品貨號
Inner join (select 商品貨號, 庫存數量 from 商品庫存檔 where 門市編號='1003') c on a.商品貨號=c.商品貨號
Inner join (select 商品貨號, 庫存數量 from 商品庫存檔 where 門市編號='1005') d on a.商品貨號=d.商品貨號
Where a.大類編號='8' And (b.庫存數量 < = 0 And c.庫存數量 > = 0 And d.庫存數量 >= 1)
Order by a.商品貨號
---3
Select a.商品貨號, a.商品名稱, b.庫存數量, c.庫存數量, d.庫存數量 from 商品基本檔 a
Inner join (Select 商品貨號 as b貨號, 庫存數量 from 商品庫存檔 where 門市編號='1001') b on a.商品貨號=b.b貨號
Inner join (Select 商品貨號 as c貨號, 庫存數量 from 商品庫存檔 where 門市編號='1003') c on a.商品貨號=c.c貨號
Inner join (Select 商品貨號 as d貨號, 庫存數量 from 商品庫存檔 where 門市編號='1005') d on a.商品貨號=d.d貨號
Where a.大類編號='8' And (b.庫存數量 < = 0 And c.庫存數量 > = 0 And d.庫存數量 >= 1)
Order by a.商品貨號

請教了,謝謝

2 個回答

1
海綿寶寶
iT邦超人 1 級 ‧ 2017-12-07 21:22:43
最佳解答

我覺得你應該看的是
上一列「建立資料表 結果 步驟」的錯誤原因
因為
資料表都建立不了
後面的複製資料更無法成功了

看更多先前的回應...收起先前的回應...
sjzgo iT邦新手 5 級 ‧ 2017-12-07 23:02:38 檢舉

https://ithelp.ithome.com.tw/upload/images/20171207/20011133ZgD3sF2nAm.jpg

sjzgo iT邦新手 5 級 ‧ 2017-12-07 23:04:33 檢舉

此檔案原先並不存在,是在匯出時新增的檔案,也有換過路徑和檔案名稱,無效

欄位名稱重覆
你有三個「庫存數量」
看看可不可以改成不同名稱試試看

改寫第一種寫法
不妨試試看

Select a.商品貨號, a.商品名稱, b.庫存數量 AS 庫存數量1001, c.庫存數量 AS 庫存數量1003, d.庫存數量 AS 庫存數量1005 from 商品基本檔 a
Inner join (select * from 商品庫存檔 where 門市編號='1001') b on a.商品貨號=b.商品貨號
Inner join (select * from 商品庫存檔 where 門市編號='1003') c on a.商品貨號=c.商品貨號
Inner join (select * from 商品庫存檔 where 門市編號='1005') d on a.商品貨號=d.商品貨號
Where a.大類編號='8' And (b.庫存數量 < = 0 And c.庫存數量 > = 0 And d.庫存數量 >= 1)
Order by a.商品貨號
sjzgo iT邦新手 5 級 ‧ 2017-12-08 11:28:25 檢舉

謝謝@海綿寶寶 前輩
依照您所建議改寫後,已順利匯出EXCEL
原來是Select有三個"庫存數量"原因導致

只是小弟不解的是,為什麼在查詢及剖析是可以的呢??

小魚 iT邦新手 1 級 ‧ 2017-12-08 11:59:57 檢舉

查詢的時候他會自動幫你改名字, 不過可能匯出Excel這邊不會吧, 建議會重複的欄位名稱都要養成習慣命名

查詢及剖析三個「庫存數量」只是單純的「顯示結果文字」;
而在 EXCEL 中是把他當成「欄位名稱」,所以不得重覆

回頭想想
在SQL Server中
你應該也沒辦法在同一個TABLE中
建立重覆的欄位名稱吧...

sjzgo iT邦新手 5 級 ‧ 2017-12-08 12:47:54 檢舉

了解囉
多謝@海綿寶寶
也謝謝各位大大協助
會把這次經驗學起來的

有問有答,再問不難
/images/emoticon/emoticon12.gif

小魚 iT邦新手 1 級 ‧ 2017-12-09 13:46:50 檢舉

應該是,
有設定最佳解答,
再問不難
/images/emoticon/emoticon39.gif

0
WilliamHuang
iT邦大師 1 級 ‧ 2017-12-07 22:18:46

善用SSMS~SSDT
/images/emoticon/emoticon41.gif

sjzgo iT邦新手 5 級 ‧ 2017-12-08 11:44:44 檢舉

謝謝,日後會參考這方面學習

我要發表回答

立即登入回答