[英]SQL Loop Through Columns and Insert Results into Temp Table
我有一個臨時#CarIDs的汽車ID列表
CREATE TABLE #CarIDs(
[CARID] [nvarchar] (60) NULL,
[Type] [nvarchar] (20) NULL,
[Flag] [nvarchar] (30) NULL) GO
INSERT INTO #CarIDs (CARID, Type, Flag) VALUES ('1111','',''), ('2222','',''), ('3333','',''), ('4444','',''), ('5555','',''), ('6666','','')
這給了我SELECT * FROM #CarIDs
+-------+-------+--------+
| CARID | Type | Flag |
+-------+-------+--------+
| 1111 | | |
| 2222 | | |
| 3333 | | |
| 4444 | | |
| 5555 | | |
| 6666 | | |
+-------+-------+--------+
如何遍歷下表(CarHierarchy)以找出每個CARID屬於哪種模型類型,然后插入到臨時表中?
+-------+-------+-------+
| Jeep |Holden | Ford |
+-------+-------+-------+
| 1111 |2222 | 3333 |
| 4444 |6666 | 5555 |
+-------+-------+-------+
我希望結果是#CarIDs:
+-------+-------+
| CARID | Type |
+-------+-------+
| 1111 |Jeep |
| 2222 |Holden |
| 3333 |Ford |
| 4444 |Jeep |
| 5555 |Ford |
| 6666 |Holden |
+------+--------+
您需要UNPIVOT
第一#CarHierarchy
表,然后做一個JOIN
上#CarIDs
表以獲得正確的類型:
-- Unpivot the #CarHierarchy table using CROSS APPLY
WITH CteCarHierarchy AS(
SELECT *
FROM #CarHierarchy
CROSS APPLY( VALUES
(Jeep, 'Jeep'),
(Holden, 'Holden'),
(Ford, 'Ford')
)t (CARID, Type)
)
SELECT
ci.CARID,
Type = cch.Type,
ci.Flag
FROM #CarIDs ci
INNER JOIN CteCarHierarchy cch
ON cch.CARID = ci.CARID
UPDATE
語句:
WITH CteCarHierarchy AS(
SELECT *
FROM #CarHierarchy
CROSS APPLY( VALUES
(Jeep, 'Jeep'),
(Holden, 'Holden'),
(Ford, 'Ford')
)t (CARID, Type)
)
UPDATE ci
SET ci.Type = cch.Type
FROM #CarIDs ci
INNER JOIN CteCarHierarchy cch
ON cch.CARID = ci.CARID
參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.