更好的方法(设置和调用参数)

Better way to do this (set and call parameters)

我正在努力得到这个结果:

这两行来自同一个查询,但我必须复制结果(第一个称为“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。

你可以尝试使用CROSS APPLY with value 来简化它。

查询 1:

SELECT v.c as RecordType, Code, Name, CONCAT(v.c, Name) as TechnicalName
FROM Temp
CROSS APPLY(VALUES ('CPA'),('CLI')) v (c)

Results: