1

假设我们在 DB 中有以下表格:

CREATE TABLE #nodes(reporter varchar(10), groupname varchar(10), node varchar(20))
CREATE TABLE #nodes_extract(id int IDENTITY, min_node varchar(20), count_nodes int, descr varchar(10) );
CREATE TABLE #nodes_histo(reporter varchar(10), groupname varchar(10), node varchar(20), nodes_extract_id int)

数据示例:

INSERT INTO #nodes (reporter, groupname, node) VALUES ('rep1','group1','node1')
INSERT INTO #nodes (reporter, groupname, node) VALUES ('rep1','group1','node2')
INSERT INTO #nodes (reporter, groupname, node) VALUES ('rep1','group2','node3')
INSERT INTO #nodes (reporter, groupname, node) VALUES ('rep2','group1','node1')
INSERT INTO #nodes (reporter, groupname, node) VALUES ('rep2','group1','node4')
INSERT INTO #nodes (reporter, groupname, node) VALUES ('rep2','group2','node5')
INSERT INTO #nodes (reporter, groupname, node) VALUES ('rep3','group1','node5')
INSERT INTO #nodes (reporter, groupname, node) VALUES ('rep3','group1','node6')
INSERT INTO #nodes (reporter, groupname, node) VALUES ('rep3','group2','node7')

让我们将一些数据提取到#nodes_extract

INSERT INTO #nodes_extract
SELECT min(node), count(node), 'blabla'
FROM #nodes
GROUP BY reporter, groupname

现在我想将所有信息从#nodes 插入到#nodes_histo 并在#nodes_histo 中添加nodes_extract_id 预期结果:

    记者组名节点节点提取ID
    代表 1 组 1 节点 1 1
    代表 1 组 1 节点 2 1
    代表 1 组 2 节点 3 4
    代表 2 组 1 节点 1 2
    代表 2 组 1 节点 4 2
    代表 2 组 2 节点 5 5
    代表 3 组 1 节点 5 3
    代表 3 组 1 节点 6 3
    代表 3 组 2 节点 7 6

你将如何实现目标?是否可以不更改表结构?

多谢!咖啡厅

4

2 回答 2

1

嗯,我想我找到了一种方法..

首先DISTINCT在插入命令中需要:

INSERT INTO #nodes_extract
SELECT DISTINCT min(node), count(node), 'blabla'
FROM #nodes
GROUP BY reporter, groupname

通过以下选择,我可以提取我正在寻找的信息:

INSERT INTO #nodes_histo
SELECT a.reporter, a.groupname,a.node, e.id 
FROM 
    (SELECT  reporter
            , groupname
            , node
            , min(node) OVER (PARTITION BY REPORTER, groupname) m
            , count(node) OVER (PARTITION BY REPORTER, groupname) c
    FROM #nodes) a
LEFT JOIN 
    #nodes_extract e
ON a.m = e.min_node
AND a.c = e.count_nodes
于 2013-02-26T14:54:34.453 回答
0

不,您必须包含一种加入表格的方法,可能是在#nodes_extract 中包含reporter 和groupname。即使您尝试使用相同的查询(和其他列)重新生成#nodes_extract,也不能保证顺序相同。

于 2013-02-26T06:46:24.273 回答