0

我希望能在我的 SQL Server 脚本方面获得一些帮助。

基本上,我有以下要求:在数据库中,我们有一个名为 Space 的表。空间具有长度和宽度。我们需要从我们收到的 excel 表中上传数据。所以我把它上传到一个表格中,这个表格也有一个长度和宽度。

现在,我需要将 Oid 从 Space (Oid, Length, Width) 获取到 #spaceTmp 表 (NULL, Length, Width) 但问题是长度和宽度可以按任何顺序匹配。

例如:空间表具有以下内容:(1、5、7)

#spaceTmp 有以下内容: (NULL, 5, 7) (NULL, 7, 5) (NULL, 4, 3) (NULL, 3, 4)

我需要#spaceTmp 有: (1, 5, 7) (1, 7, 5) (2, 4, 3) (2, 3, 4)

任何建议将被认真考虑。

PS为简单起见,我没有使用GUID,而是Oid列的整数

4

2 回答 2

1

像这样的东西?

UPDATE #spaceTemp SET Old = ID
FROM Space 
WHERE (Space.Width = #spaceTemp.Width AND Space.Length = #spaceTemp.Length)
OR (Space.Width = #spaceTemp.Length AND Space.Length = #spaceTemp.Width)
于 2012-07-02T13:39:00.697 回答
0

试试这个:

/*
 -- Setup Script
SELECT NEWID() OID, 5 Width, 7 Length
    INTO #Space



SELECT NEWID() OID, 5 Width, 7 Length
    INTO #SpaceTemp

INSERT INTO #SpaceTemp
SELECT NULL OID, 5 Width, 7 Length

INSERT INTO #SpaceTemp
SELECT NULL OID, 7 Width, 5 Length


INSERT INTO #SpaceTemp
SELECT NULL OID, 4 Width, 3 Length

INSERT INTO #SpaceTemp
SELECT NULL OID, 3 Width, 4 Length

UPDATE #SpaceTemp SET OId = NULL;
*/
UPDATE a
        SET a.OId = COALESCE(b.OId, NEWID())
  FROM #SpaceTemp a LEFT JOIN #Space b
        ON (a.Width = b.Width AND a.Length = b.Length)
        OR (a.Width = b.Length AND a.Length = b.Width)




SELECT * FROM #SpaceTemp
于 2012-07-02T13:58:09.630 回答