2017-10-11 63 views
0

我實際上試圖保留重複項,以便可以在報告中多次列出它們。我有一個適用於不止一個品牌項目,我用了一系列的複選框的每個記錄表明它是否適用於品牌或不:嘗試在Access 2003中的左側加入重複項SQL

Item1 brand x 
Item2 brand y,z 
Item3 brand y 

理想情況下,我希望能夠選擇在查詢記錄,這樣我可以運行通過品牌組合的報告,顯示出複製任何地方發生:

Item1 x 
Item2 y 
Item2 z 
Item3 y 

一切我能找到的關於擺脫重複的。向所有解決方案開放。非常感謝幫助。 (我有一些經驗的代碼,但到目前爲止,SQL和一般的訪問是自學成才。)

+0

你的表格結構是什麼樣的? – bbrumm

+0

品牌在主表中的9列左右設置爲「是/否」值。品牌表中包含品牌的全名,然後是顯示它們適用的是/否列。有幾個「父母」品牌,因此是重複的。 – RSDD

+0

老實說,如果通過使用INSERT創建臨時表的記錄消除連接和循環將是一條更好的路徑,我也對此表示贊同。 – RSDD

回答

0

根據您的表結構,這個查詢應該工作:

SELECT itemname, 'Brand1' AS brand 
FROM maintable 
WHERE brand1 = 'Y' 
UNION ALL 
SELECT itemname, 'Brand2' 
FROM maintable 
WHERE brand2 = 'Y' 
UNION ALL 
SELECT itemname, 'Brand3' 
FROM maintable 
WHERE brand3 = 'Y' 
UNION ALL 
SELECT itemname, 'Brand4' 
FROM maintable 
WHERE brand4 = 'Y' 
UNION ALL 
SELECT itemname, 'Brand5' 
FROM maintable 
WHERE brand5 = 'Y' 
UNION ALL 
SELECT itemname, 'Brand6' 
FROM maintable 
WHERE brand6 = 'Y' 
UNION ALL 
SELECT itemname, 'Brand7' 
FROM maintable 
WHERE brand7 = 'Y' 
UNION ALL 
SELECT itemname, 'Brand8' 
FROM maintable 
WHERE brand8 = 'Y' 
UNION ALL 
SELECT itemname, 'Brand9' 
FROM maintable 
WHERE brand9 = 'Y' 

它使用了幾個UNION ALL報表以確保顯示所有記錄。

如果表格的列設置爲Y,它將在結果集的第二列中顯示品牌名稱。這將允許您在單個結果集中顯示項目名稱和品牌列表。

您需要重新命名我的查詢中的itemname列,maintainable以及每個brand1-9列以匹配您的表。

除了9個語句和一個UNION ALL之外,可能還有更好的方法,但這應該起作用。

這是否給你你需要的東西?

+0

我必須添加一個LEFT JOIN才能到達另一個表中的品牌全名,這允許我只將一個「品牌」分組,而不是每個品牌。 SELECT tblLiterature.LitNo,tblLiterature.LitDate,tblLiterature.Rev,tblLiterature.LitDescription,tblLiterature.ModelNos,tblLiterature.ChangeDescription,tblLiterature.LitStatus,tblBrands.BrandFullName,tblLiterature.Brand1 FROM tblBrands LEFT JOIN tblLiterature ON(tblBrands.Brand1 = (((tblLiterature.LitStatus)=「R」)AND((tblLiterature.Brand1)= -1)) UNION ALL 但是這有很大的幫助。謝謝! – RSDD