Sal*_* K. 1 t-sql sql-server azure-sql-database
我试图得到这个结果:
这两行来自同一查询,但我必须复制结果(第一个称为“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
Run Code Online (Sandbox Code Playgroud)
还有其他最有效的解决方案吗?因为大约有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
Run Code Online (Sandbox Code Playgroud)
但这不起作用。
PS:我正在从“Microsoft SQL Azure (RTM) - 12.0.2000.8”查询 SSMS。
您可以尝试使用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)
Run Code Online (Sandbox Code Playgroud)
结果: