我試圖得到這個結果:

這兩行來自同一個查詢,但我必須復制結果(第一個稱為“CLI”,第二個稱為“CPA”)。
目前我用 UNION 來做:
WITH Temp AS (SELECT Code, Name, ...)
SELECT 'CLI' as RecordType, Code, Name, CONCAT('CLI', Name) as TechnicalName, ... FROM Temp
UNION ALL
SELECT 'CPA' as RecordType, Code, Name, CONCAT('CPA', Name) as TechnicalName, ... FROM Temp
還有其他最有效的解決方案嗎?因為大約有30列,所以現在代碼很大。
我想到了這樣的事情:
DECLARE @P_RecordType as char(3);
WITH Temp AS (SELECT Code, Name, ...)
SET @P_RecordType = 'CLI'
SELECT * FROM Temp
UNION ALL
SET @P_RecordType = 'CPA'
SELECT * FROM Temp
但它不起作用。
PS:我正在從“Microsoft SQL Azure (RTM) - 12.0.2000.8”查詢 SSMS。
uj5u.com熱心網友回復:
您可以嘗試使用CROSS APPLYwith value 使其變得簡單。
查詢 1:
SELECT v.c as RecordType, Code, Name, CONCAT(v.c, Name) as TechnicalName
FROM Temp
CROSS APPLY(VALUES ('CPA'),('CLI')) v (c)
結果:
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/404961.html
標籤:
下一篇:提取字符之間的資料SQL
