我希望得到一些SQL Server脚本的帮助。
基本上,我有以下要求: 在数据库中,我们有一个名为Space的表。空间有长度和宽度。 我们需要从我们收到的excel表上传数据。所以我把它上传到一张桌子里,这张桌子也有长度和宽度。
现在,我需要将Oid从空间(Oid,长度,宽度)放入#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)
任何建议都将受到赞赏。
P.S。为简单起见,我没有使用GUID,而是使用Oid列的整数
答案 0 :(得分: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)
答案 1 :(得分: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