【问题标题】:Issue with Joining multiple similar tables加入多个相似表的问题
【发布时间】:2015-08-20 17:36:37
【问题描述】:

我有三个具有相同列名的表:[PARTNO]、[DATETIME] 等,我创建了一个视图来组合所有三个:

SELECT *
FROM         SPC.dbo.VDATA
UNION 
SELECT     *
FROM         SPC_Archive.dbo.VDATA
UNION 
SELECT     *
FROM         SPC.dbo.VDATA1
UNION 
SELECT     *
FROM         SPC_Archive.dbo.VDATA1
UNION     SELECT     *
FROM         SPC.dbo.VDATA2
UNION 
SELECT     *
FROM         SPC_Archive.dbo.VDATA2

我遇到的问题是我需要它只为 [PARTNO] 和 [DATETIME] 返回一个值,我不知道如何在联合上执行此操作....

【问题讨论】:

  • 您是希望每个PARTNO 只写一行,还是只需要一行作为结果

标签: sql view union greatest-n-per-group


【解决方案1】:

听起来您可能在执行 UNION 后尝试在 PARTNO 上进行 GROUP。您可以为此使用嵌套查询。例如,如果您尝试在所有表中查找每个 PARTNO 的最大 DATETIME,您可以:

SELECT PARTNO, MAX([DATETIME])
FROM (
    SELECT PARTNO, [DATETIME] FROM SPC.dbo.VDATA
    UNION SELECT PARTNO, [DATETIME] FROM SPC_Archive.dbo.VDATA
    UNION SELECT ...
    UNION SELECT ...
) combined 
GROUP BY combined.PARTNO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多