我有3张桌子:
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个月后重新打开该表,它将以相同的方式重新查询数据。
如果我能提供任何其他信息以帮助您获得正确的结果,请告诉我。
ADDON
我花了很长时间,为每个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;
答案 0 :(得分:0)
您似乎在clientID
表中有多个与User_Defined_Data
个Clients
相关的行。
为什么不重建该表,使其包含您需要的所有字段,并且与CASE
一对一?
否则,您可以在查询中使用description
语句,并按{{1}}过滤其内容。