台灣最大程式設計社群網站
線上人數
978
 
會員總數:239920
討論主題:186058
歡迎您免費加入會員
討論區列表 >> MS SQL >> 2個Table Join問題
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
2個Table Join問題
價值 : 100 QP  點閱數:305 回應數:10

樓主

HB
初級專家
1103 56
2092 227
發送站內信

有2個Table Join問題請教:

Table c:ContractPO

PoNo SpecItem QtyPurchase UnitPrice GrandValue
L001 AAA 1234 900 1110600
L001 BBB 222 333 73926
L012 CCC


Table p:ContractPOPrice

PoNo SpecItem QtyThisTime
L001 AAA 100
L001 AAA 200

T-SQL語法如下:

SELECT c.[PoNo], c.[SpecItem], c.[QtyPurchase], c.[UnitPrice], c.[GrandValue], p.

[QtyThisTime]
FROM ContractPO AS c LEFT JOIN ContractPOPrice AS p ON p.PoNo=c.PoNo
WHERE p.PoNo='L001'
ORDER BY c.[PoNo], c.[ItemNo], c.[DetailNo];

執行的結果如下所示:
PoNo SpecItem QtyPurchase UnitPrice GrandValue QtyThisTime
L001 AAA 1234 900 1110600 100
L001 AAA 1234 900 1110600 200
L001 BBB 222 333 73926 100
L001 BBB 222 333 73926 200

請問T-SQL如何修正,才能取得下列結果結果:

PoNo SpecItem QtyPurchase UnitPrice GrandValue QtyThisTime
L001 AAA 1234 900 1110600 100
L001 AAA 1234 900 1110600 200
L001 BBB 222 333 73926

謝謝!


搜尋相關Tags的文章: [ Table Join ] ,
本篇文章發表於2017-01-13 17:26
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

四百龍銀
檢舉此回應
從AAA的部分看不出個邏輯

若您要當BBB或其他條件發生 QtyThisTime 會變成空

也只能下case when了
本篇文章回覆於2017-01-13 21:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

HB
檢舉此回應
感謝四百銀龍的說明。

ContractPO主要是紀錄合約量,ContractPOPrice主要是紀錄收貨量,此T-SQL主要目的是呈現符合PoNo='L001'的條件下,顯示每次的收貨明細,但是需帶出ContractPO內的QtyPurchase,UnitPrice,GrandValue欄位資料。
本篇文章回覆於2017-01-14 10:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

四百龍銀
檢舉此回應
怪怪的 先別管L001了 他們都是001 但BBB與AAA為啥不太一樣

你可以試試union...

請問T-SQL如何修正,才能取得下列結果結果:

PoNo SpecItem QtyPurchase UnitPrice GrandValue QtyThisTime
L001 AAA 1234 900 1110600 100
L001 AAA 1234 900 1110600 200
L001 BBB 222 333 73926 ???
本篇文章回覆於2017-01-14 17:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

HB
檢舉此回應
感謝再次說明,但測試後仍然無法符合需求!
本篇文章回覆於2017-01-15 11:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

asp小菜渣
檢舉此回應
少了p.SpecItem = c.SpecItem
本篇文章回覆於2017-01-16 08:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

HB
檢舉此回應
感謝說明
本篇文章回覆於2017-01-17 07:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

四百龍銀
檢舉此回應
到底是在感謝什麼 我覺得我好像變成受試者
問題講得不清不楚 欄位還有值是空的
看到鬼嗎
感謝說明
本篇文章回覆於2017-01-17 09:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

HB
檢舉此回應
不好意思,上網問個問題,讓#7見到鬼!

對於願意撥空回答所提問題,表示感謝,這是我的基本禮儀。

話說回來,對於問題是否有邏輯?,或是空資料是否合理?,或者問題是否不清不楚?,深入問題,才清楚。

如果願意多花3分鐘,將問題所列的資料鍵入2個資料表,並將#5的說明加入提問的T-SQL,執行後就可以得到提問的答案。
本篇文章回覆於2017-01-19 12:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

四百龍銀
檢舉此回應
論壇的定義是為了一起討論問題並找出更好的解決方案,
在過程達到一起學習的路徑,
並不是派工給我們解決您作業或工作上的困難,
這篇討論串我只看到#5幫你Debug,
但這真的對您是好事嗎???
本篇文章回覆於2017-01-21 12:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

HB
檢舉此回應
先聲明:我沒有派工給給別人解決我工作上困難的意圖,至於別人的想法,我無權左右,若自己有此懷疑,大可不需理會別人提問,否則網站每日一、兩千人的線上流量人數,為何回答者寥寥可數?

我工作的專業並非程式設計,學習程式設計純粹興趣,只是看看能否簡化工作流程,拆解工作而已,所以都是利用下班時間進行摸索、學習。

至於本提問,只能感謝#5的協助;若無更好的解答,也不影響我工作進行,至於是否對我有幫助,只有我自己最清楚,更不需要您費心!

感謝這個網站讓我學習不少程式設計觀念,所以我也抱著回饋給需要之人,但我回應的資訊,幾乎自己都先自行測試過才貼上,難道這也在幫別人Debug嗎?但這又何嘗不是在學習?
本篇文章回覆於2017-01-21 20:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

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