0

我有 2 个表需要加入并从中选择唯一行。这是我的数据示例:(还有更多列)

tbl1:
MB# MBName  PCCNo_PRI   Primary_IP       PCCNo_SEC          Secondary_IP    ID
100  name    0               10.1.9.10       30              10.1.9.10       1 
103  name3   17              10.1.9.27       47              10.1.9.67       4
403  name13  17              10.1.9.27       47              10.1.9.67       14

表2:

RTU PCC#_PRI    PCC#_SEC    STATION ADDRESS
15  0           30          6
52  12          42          1
53* 17          47          1
54  18          48          1
63  9           39          2
69* 17          47          2

对于 tbl1 中的给定 MB#,我需要加入这两个表并在 tbl2 中获取唯一的 RTU。查询 =

SELECT t1.MB#,t2.RTU,t2.[Device Manufacturer],t2.PCC#_PRI,t2.PCC#_SEC,t2.[STATION ADDRESS] 
INTO C300_RTU_MASTERBLK_Map
FROM mbm_PCDIMasterBlk_tbl as t1, dbo.WOA_PCC_Conn_tbl as t2
WHERE t1.PCCNo_PRI = t2.PCC#_PRI

我得到 tbl2 53 和 69 的重复行(* 以上)。53 最终有 2 个条目;一个到 103 和一个 403(69 得到相同)。如何查询此为 MB# 的唯一 RTU(s)?

4

1 回答 1

5

出现重复行是因为您加入“17”,每边有 2 行

然后,就目前而言,您不能使用该 SELECT 列表。
你如何决定t1.MB#你想要的 t2 列?

我看不到辅助 JOIN 列。
所以你能得到的最好的结果是使用 MAX(或 MIN)来选择 403 或 103。

SELECT
   MAX(t1.MB#) AS MB#,
   t2.RTU,t2.[Device Manufacturer],t2.PCC#_PRI,t2.PCC#_SEC,t2.[STATION ADDRESS] 
INTO C300_RTU_MASTERBLK_Map
FROM 
   dbombm_PCDIMasterBlk_tbl as t1
   JOIN
   dbo.WOA_PCC_Conn_tbl as t2 ON t1.PCCNo_PRI = t2.PCC#_PRI
GROUP BY
   t2.RTU,t2.[Device Manufacturer],t2.PCC#_PRI,t2.PCC#_SEC,t2.[STATION ADDRESS] 
于 2012-03-09T16:03:57.330 回答