簡體   English   中英

MS Access:查詢以合並行

[英]MS Access: Query to combine rows

我有3張桌子:

  • 客戶群
  • User_Defined_Definitions
  • User_Defined_Data

Clients表具有基本信息:

ClientID, Name, Address...

User_Defined_Definitions具有用戶def字段的標題:

StartDate, SalesRep, Website...

然后, User_Defined_Data表包含用於填充客戶端表中每個客戶端的那些字段的數據。

我建立了一個查詢,該查詢將提取我需要的所有數據,但對於該客戶端存在的每個User_Defined_Data行,它都會提取一行。 我想做的是為每個客戶端拉一行,然后根據需要追加任意列,以將所有用戶定義的字段填充到該行中。

ClientID Name   Address     Description Data
155555   Calvin 123 Fake St StartDate   10/10/2013
155555   Calvin 123 Fake St SalesRep    Tom
155555   Calvin 123 Fake St Website     http://www.fakesite.com
155556   Steve  456 Root Rd StartDate   8/5/2013
155557   Kathy  715 Main St StartDate   5/5/2010
155557   Kathy  715 Main St SalesRep    Jessica
155557   Kathy  715 Main St Website     http://www.fakesite2.com
155558   Jenny  345 Fake St StartDate   9/9/2012
155558   Jenny  345 Fake St Website     http://www.fakesite3.com

前三列來自Client表。 Description列來自User_Defined_Definitions表。 Data來自User_Defined_Data表。

我希望看到與此類似的內容

ClientID    Name    Address StartDate   SalesRep    Website
155555  Calvin  123 Fake St 10/10/2013  Tom         http://www.fakesite.com
155556  Steve   456 Root Rd 8/5/2013        
155557  Kathy   715 Main St 5/5/2010    Jessica     http://www.fakesite2.com
155558  Jenny   345 Fake St 9/9/2012                http://www.fakesite3.com

我知道使用sql可以實現,但是我通常只是編寫腳本來處理導出后的數據。 但是這次我需要能夠在Access中執行此操作,以便可以從2個月后重新打開該表,並且它將以相同的方式重新查詢數據。

讓我知道是否還有其他方法可以幫助您獲得正確的結果。

添加在

我走了很長一段路,並對每個UDF進行了單獨的查詢,然后通過再次運行查詢來合並它們,而不是將每個查詢都放在一行中。 我仍然很好奇如何使用SQL進行操作,因為現在我正處於為組織更改CRM和會計軟件的過程中,這已成為一項艱巨的任務。

這是我用來將UDF拉到上面概述的單獨行上的查詢。

SELECT dbo_AMGR_Client_Tbl.Client_Id, dbo_AMGR_Client_Tbl.Name,
dbo_AMGR_Client_Tbl.Address_Line_1, dbo_AMGR_Client_Tbl.Address_Line_2, 
dbo_AMGR_Client_Tbl.City, dbo_AMGR_Client_Tbl.State_Province, 
dbo_AMGR_Client_Tbl.Zip_Code, dbo_AMGR_User_Field_Defs_Tbl.Description, 
dbo_AMGR_User_Fields_Tbl.DateCol, dbo_AMGR_User_Fields_Tbl.NumericCol, 
dbo_AMGR_User_Fields_Tbl.AlphaNumericCol
FROM dbo_AMGR_User_Field_Defs_Tbl INNER JOIN (dbo_AMGR_Client_Tbl INNER JOIN 
dbo_AMGR_User_Fields_Tbl ON dbo_AMGR_Client_Tbl.Client_Id = 
dbo_AMGR_User_Fields_Tbl.Client_Id) ON (dbo_AMGR_User_Field_Defs_Tbl.Type_Id = 
dbo_AMGR_User_Fields_Tbl.Type_Id) AND (dbo_AMGR_User_Field_Defs_Tbl.Code_Id = 
dbo_AMGR_User_Fields_Tbl.Code_Id)
GROUP BY dbo_AMGR_Client_Tbl.Name_Type, dbo_AMGR_Client_Tbl.Client_Id, 
dbo_AMGR_Client_Tbl.Name, dbo_AMGR_Client_Tbl.Address_Line_1, 
dbo_AMGR_Client_Tbl.Address_Line_2, dbo_AMGR_Client_Tbl.City, 
dbo_AMGR_Client_Tbl.State_Province, dbo_AMGR_Client_Tbl.Zip_Code, 
dbo_AMGR_User_Field_Defs_Tbl.Description, dbo_AMGR_User_Fields_Tbl.DateCol, 
dbo_AMGR_User_Fields_Tbl.NumericCol, dbo_AMGR_User_Fields_Tbl.AlphaNumericCol
HAVING (((dbo_AMGR_Client_Tbl.Name_Type)="C") AND ((dbo_AMGR_Client_Tbl.Name) Not Like "*HOUSE*"))
ORDER BY dbo_AMGR_Client_Tbl.Name;

似乎您有多個與User_Defined_Data表中的一個clientID相關的行。

為什么不重建該表,使其包含您需要的所有字段,並且與Clients一對一?

否則,您可以在查詢中使用CASE語句,並按description過濾其內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM