iT邦幫忙

0

[C#] 不同SQL結果,寫入同個Excel

  • 分享至 

  • xImage

各位前輩下午好

小弟已經撰寫好兩個SQL語法,一個是勞務資料,一個是零件資料,欄位名稱皆不相同,但是由"據點"及"工單號碼"關聯。

目前想要將兩個資料,寫入同一個excel表,範例如下:
https://ithelp.ithome.com.tw/upload/images/20190926/20017294M3ySBgMaqp.jpg

使用C#的話,整個程式流程該如何撰寫呢?

謝謝!

yorklin iT邦新手 5 級 ‧ 2019-09-26 15:22:53 檢舉
別人怎麼做我不清楚(還很菜),我待的部門這邊寫成Stored Procedure,兩個DS的資料彙總好,C#再呼叫這支SP產表。
b7307024 iT邦新手 3 級 ‧ 2019-09-26 15:24:54 檢舉
慘了,我不會寫Stored Procedure
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

2
舜~
iT邦高手 1 級 ‧ 2019-09-26 15:24:43
最佳解答

勞務資料、零件資料 都是在資料庫??

您的問題分成兩個

1.透過c# 撈取資料庫的資料
對兩個資料表(或您寫的那兩串sql)做join就可以了 -> 您應該是沒問題
(若您已經分別撈資料了,那就用c#中的Linq把兩串資料join也可以)

若您是要一個sql的結果附加在另一個SQL結果的後面一起輸出的話,可透過 UNION 將兩個sql結果串合併起來

2.c# 產生/寫入 Excel,可以參考這篇C#筆記 - 生成Excel表單【一】,不同平台應該大同小異

看更多先前的回應...收起先前的回應...
b7307024 iT邦新手 3 級 ‧ 2019-09-26 15:35:54 檢舉

沒錯,兩個資料都是在資料庫,但都是由SQL組合起來的。
1.我起初也想說再把兩個表組合起來就可以了,但事實不是如此,組合起來會變成:https://ithelp.ithome.com.tw/upload/images/20190926/20017294CgAWZlls18.jpg

2.寫入excel,小弟已有方法,感謝教學!

舜~ iT邦高手 1 級 ‧ 2019-09-26 15:41:30 檢舉

一個是(據點、工單編號、勞務代號、說明),另一個是(據點、工單編號、零件代號、說明)輸出結構相似的話~
您的狀況適合用UNION,把兩組sql結果UNION (ALL)起來

sion iT邦新手 4 級 ‧ 2019-09-26 17:02:21 檢舉
select a as 據點, b as 工單編號,c as 項目,d as 說明 from tableA
union
select a as 據點, b as 工單編號,c as 項目,d as 說明 from tableB
b7307024 iT邦新手 3 級 ‧ 2019-10-04 16:35:36 檢舉

舜大,感謝您提供UNION方法,就可以成功了,後續發現有資料重複的狀況,使用UNION ALL也可以帶出全部的資料,非常感謝喔!!

sion大,感謝您直接提供語法範例。

0
小魚
iT邦大師 1 級 ‧ 2019-09-26 16:58:33

名字不同的就用 AS 改成相同的,
譬如說[據點] AS [Place]之類的,
甚至如果你需要空白欄也可以 "" AS [Place],
改成一樣的結構,
就可以UNION了.

b7307024 iT邦新手 3 級 ‧ 2019-10-04 16:32:03 檢舉

那請問表名一樣可以嗎?如
SELECT A.NAME1,A.NAME2,A.ADDRESS
FROM TABLE1 AS A
UNION ALL
SELECT A.NAME1,A.NAME2,A.ADDRESS
FROM TABLE2 AS A

小魚 iT邦大師 1 級 ‧ 2019-10-04 17:29:53 檢舉

表名可以用AS,
但是你AS之後再UNION就沒什麼意義了,
最後還是會成為一個新的表...

b7307024 iT邦新手 3 級 ‧ 2019-10-09 10:46:57 檢舉

我了解了,感謝小魚大教學,不過由於是舜大"先"解決了我的問題,所以我就選他為最佳解答囉!

我要發表回答

立即登入回答