2013-05-08 70 views
1

我想获得按日期排序的成本和付款的组合结果。这是我想查询:MS Access与类似字段组合表

SELECT ClientID, TheDate, Payment, Cost 
FROM 
(
    SELECT PaymentDate AS TheDate, Amount AS Payment, ClientID 
    FROM Payment 
    UNION ALL 
    SELECT BookedDate AS TheDate, Cost, ClientID 
    FROM [All Bookings Query] 
) 
ORDER BY TheDate DESC; 

它几乎运作...然而,弹出一个框,让我对“付款”(如字段不存在),输入一个值。如果我留下那个空白并点击确定,我会得到一个结果集,其中“Payment”列完全空白,而“Cost”列包含两个表中的金额。我使用的字段名称是100%正确的。

我认为问题在于UNION试图将两个表压缩成3列的结果,而我试图选择4.我从来没有做过这样的查询,所以我不知道如何解决这个问题。

我想要的是付款和成本分开的列。我的查询出了什么问题?

回答

1

您需要在每个子查询中包含4列,将0列入付款的成本列,0列入预订的付款列。

SELECT ClientID, TheDate, Payment, Cost 
FROM 
(
    SELECT PaymentDate AS TheDate, Amount AS Payment, 0 AS Cost, ClientID 
    FROM Payment 
    UNION ALL 
    SELECT BookedDate AS TheDate, 0 As Payment, Cost, ClientID 
    FROM [All Bookings Query] 
) 
ORDER BY TheDate DESC; 
+1

谢谢!我还发现Access需要SELECT中的字段顺序来匹配所有查询。 – 2013-05-08 17:49:10