我有表A,其中一行的總保費爲政策編號和QuoteID。 如何加入一對多並保持相同的總金額
我需要將它連接到表B,它有許多行具有相同的Policy#和QuoteID但不同的WeightCode和ClassCode。
我如何加入這兩個表的,所以我可以從表A只保留一個總(WP)? 因爲後來,當我在SSRS中總結(WP)時,它會給我錯誤的數字。
可以說,我想這樣的事情只有一個WP = 16630餘爲0:
我有表A,其中一行的總保費爲政策編號和QuoteID。 如何加入一對多並保持相同的總金額
我需要將它連接到表B,它有許多行具有相同的Policy#和QuoteID但不同的WeightCode和ClassCode。
我如何加入這兩個表的,所以我可以從表A只保留一個總(WP)? 因爲後來,當我在SSRS中總結(WP)時,它會給我錯誤的數字。
可以說,我想這樣的事情只有一個WP = 16630餘爲0:
我同意上司的評價,認爲它好像你正在試圖解決錯誤的問題。如果您使用的是SSRS,那麼您可以在報告的不同部分使用多個數據集。你會得到你的第一個數據集爲TableA
,第二個數據集爲TableB
。我相信這可能是你最好的選擇。
但是,如果你真的想在一個查詢的數據集,這應該這樣做:
SELECT
b.QuoteID,
b.PolicyNumber,
b.WeightClass,
b.SecondaryLiabFactor,
b.ClassCode,
CASE
WHEN ROW_NUMBER() OVER(PARTITION BY a.QuoteID ORDER BY (SELECT 0)) = 1 THEN a.WP
ELSE 0
END,
a.YearNum,
a.MonthNum
FROM TableA AS a
INNER JOIN TableB AS b ON a.QuoteID = b.QuoteID
它使用ROW_NUMBER()
,以檢查它是否在加盟的第一個記錄並返回WP
值,如果是這樣,否則將顯示0
。 ORDER BY (SELECT 0)
只是因爲你不需要行號是基於任何明確的順序。
#jtate。謝謝你的建議。它完全適用於我的部分項目。但現在我必須加入更糟的事情。也許你會有一秒鐘看看它? http://stackoverflow.com/questions/40622393/how-to-join-many-to-many-and-keep-the-same-total-amount – Oleg
海事組織你正在處理錯誤的問題;也就是說你正在修復一個不能解決問題的症狀,或者你的方法有缺陷。對於其他值,您不希望爲0,您希望在加入之前彙總(總和)並獲取誇大的值,或者僅爲每個quiteID使用最小/最大值,或者將quoteID作爲分區使用分析總和。看起來你確實需要表B中的所有記錄,這只是影響你的總和。如果不知道「以後」涉及哪些表格以及需要總結什麼內容,則無法真正幫助更多。顯示實際問題;不要提及它。 – xQbert
如果你真的想要返回所有記錄,但只有其中一個記錄的值,那麼什麼樣的業務規則可以確定哪一個記錄? – HLGEM
表B中的PK是什麼? – HLGEM