首页 > 解决方案 > Microsoft Access 向现有联合选择添加额外的列

问题描述

[在此处输入图片描述][1]我需要在查询中添加 4 列(商品名称、FullPrice_2018(price)、FullPrice_2019(price)、(FullPrice_2019-FullPrice_2018))。我不知道如何在不合并行的情况下向联合中添加另一列。现在我的桌子上有 2018 年和 2019 年的物品,但我还需要 3 列。

https://i.stack.imgur.com/lTmqB.png

SELECT FullPrice_2018.[Item name]
FROM FullPrice_2018
UNION 
SELECT FullPrice_2019.[Item name]
FROM FullPrice_2019
ORDER BY [Item name]


Result should be like this 
"Item name" price2018 price2019 "price2019-price2018"


 https://i.stack.imgur.com/XxKU5.png

标签: sqlms-access

解决方案


你只是想要JOIN

SELECT F2018.[Item name], F2018.FullPrice, F2019.FullPrice,
       (F2019.FullPrice - F2018.FullPrice)
FROM FullPrice_2018 as F2018 INNER JOIN
     FullPrice_2019 as F2019
     ON F2018.[Item name] = F2019.[Item name] 
ORDER BY F2018.[Item name];

不幸的是,MS Access 不支持FULL JOIN. 但我认为你可以这样做:

SELECT [Item name], MAX(FullPrice_2018), MAX(FullPrice_2019),
       (MAX(FullPrice_2019) - MAX(FullPrice_2018))
FROM (SELECT F2018.[Item name], F2018.FullPrice as FullPrice_2018, NULL as FullPrice_2010 
      FROM FullPrice_2018 as F2018
      UNION ALL
      SELECT F2019.[Item name], NULL, F2019.FullPrice as FullPrice_2019
      FROM FullPrice_2019 as F2019
     ) F
GROUP BY [Item name]
ORDER BY [Item name];

并非所有版本的 MS Access 都支持UNION ALLFROM子句,因此您可能需要对查询的该部分使用视图。


推荐阅读