有两张桌子。一个是包含'表信息'的基表。对于游客中心。另一个包含'职业信息'。
基表结构具有为每个表记录的原始坐标(x,y)。但是在职业期间,一两个表可以与另一个表合并。在这种情况下,我希望获得具有新坐标的不同表格列表。无法更改或更新基表坐标。
不知怎的,我只是没有得到结果。您可能会注意到表7和9已合并。将7合并为9.因此9是主表,表7和9必须具有9的坐标。
TABLE_NUMBER T_TABLE TABLE_TYPE LOCATION_X LOCATION_Y
1 (null) Rectangular 49 74
2 (null) Rectangular 68 101
3 3 Rectangular 49 107
4 4 Rectangular 24 80
5 (null) Rectangular 82 80
6 6 Round 29 19
7 (null) Round 13 9
8 8 Round 66 10
9 9 Round 112 16
9 7 Round 112 16
预期结果:
TABLE_NUMBER TABLE_TYPE LOCATION_X LOCATION_Y
1 Rectangular 49 74
2 Rectangular 68 101
3 Rectangular 49 107
4 Rectangular 24 80
5 Rectangular 82 80
6 Round 29 19
7 Round 112 16
8 Round 66 10
9 Round 112 16
答案 0 :(得分:0)
希望这有效。 Fiddle Attached
<强>脚本:强>
;WITH cte_temp AS
(
SELECT TT.TABLE_NUMBER
,TC.TABLE_NUMBER T_TABLE
,TT.[TABLE_TYPE]
,TT.[LOCATION_X]
,TT.[LOCATION_Y]
FROM [TABLES] TT LEFT JOIN [OCCUPATIONS] TC
ON (TT.[TABLE_NUMBER] = CASE WHEN TC.[MAIN_TABLE_NUMBER] = 0 THEN TC.TABLE_NUMBER
ELSE TC.MAIN_TABLE_NUMBER END)
)
SELECT DISTINCT
a.TABLE_NUMBER,
a.TABLE_TYPE,
CASE WHEN a.T_TABLE IS NULL AND b.T_TABLE IS NOT NULL THEN b.LOCATION_X ELSE a.LOCATION_X END AS LOCATION_X,
CASE WHEN a.T_TABLE IS NULL AND b.T_TABLE IS NOT NULL THEN b.LOCATION_Y ELSE a.LOCATION_Y END AS LOCATION_Y
FROM cte_temp AS a
LEFT OUTER JOIN cte_temp AS b
ON a.TABLE_NUMBER = b.T_TABLE