1

我要做的是从三个不同的表中提取唯一的数据集,并使用 UNION 查询将它们一起显示。它们都有一个共同的领域,因此它们应该通过该领域进行链接。当我尝试运行显示“无法执行查询。使用多值字段的无效操作或语法”的查询时出现错误。我知道哪个字段导致了问题,它是“业务线”字段。我将如何解决这个问题,以便查询能够处理它?甚至可能吗?

这是我正在使用的 SQL 语句:

SELECT [Financial Bureau Reports].[Date Year], [Financial Bureau Reports].[Section Chief].[Financial Bureau Reports].[Outcome], [Financial Bureau Reports].[Type of Review]
FROM [Financial Bureau Reports]
WHERE (([Financial Bureau Reports].[CoCode (NAIC)]=[Forms]![Home Screen]![txtCoCode]))

UNION ALL

SELECT [Market Analysis Review].[Data Year], [Market Analysis Review].[Review Level], [Market Analysis Review].[Line of Business].[value], [Market Analysis Review].[Recommendation], [Market Analysis Review].[Analyst], [Market Analysis Review].[Action]
FROM [Market Analysis Review]
WHERE(([Market Analysis Review].[CoCode (NAIC)]=[Financial Bureau Reports].[CoCode(NAIC)]))

UNION ALL 

SELECT [MarketConductExams].[State], [MarketConductExams].[Report Date]
FROM [MarketConductExams]
WHERE [MarketConductExams].[CoCode (NAIC)]=[Market Analysis Review].[CoCode (NAIC)];

很抱歉缺少格式,显然 SQL 不能很好地传输。

另外,我在 Microsoft Access 2010 中使用 SQL。

如果问题太模糊或需要澄清,请告诉我。谢谢!

4

4 回答 4

3

您不能将选择中列数不同的查询合并在一起。这些似乎甚至不是应该合并在一起的相关查询。我认为您需要向您的应用程序发送三个单独的查询。

于 2012-11-30T17:53:38.317 回答
1

我通常在联合周围有一个外部 SELECT 但其他人是正确的,您需要具有相同数量的字段和这些字段的相同名称。

使用 AS 同步字段名称。如果您有一些不在其他查询中的字段,那么您可以制造它们:null 作为 SomeOutputField 或 '' 作为 SomeOutputField。

于 2012-11-30T17:59:26.120 回答
0

我不知道您为什么特别收到该消息,但 UNION 语句要求每个 SELECT 语句具有相同数量的列并且它们具有相同的数据类型。您发布的 SQL 语句并非如此。

于 2012-11-30T17:54:43.023 回答
0

我认为您需要将您的表相互连接,而不是将它们联合在一起 - 如下所示:

SELECT [Financial Bureau Reports].[Date Year], 
       [Financial Bureau Reports].[Section Chief].[Financial Bureau Reports].[Outcome], 
       [Financial Bureau Reports].[Type of Review],
       [Market Analysis Review].[Data Year], 
       [Market Analysis Review].[Review Level], 
       [Market Analysis Review].[Line of Business].[value], 
       [Market Analysis Review].[Recommendation], 
       [Market Analysis Review].[Analyst], 
       [Market Analysis Review].[Action],
       [MarketConductExams].[State], 
       [MarketConductExams].[Report Date]
FROM [Financial Bureau Reports]
(JOIN [Market Analysis Review]
   ON [Market Analysis Review].[CoCode (NAIC)]=[Financial Bureau Reports].[CoCode(NAIC)]
 (JOIN [MarketConductExams]
    ON [MarketConductExams].[CoCode (NAIC)]=[Market Analysis Review].[CoCode (NAIC)]))
WHERE [Financial Bureau Reports].[CoCode (NAIC)]=[Forms]![Home Screen]![txtCoCode];
于 2012-11-30T18:01:35.960 回答