给定一个特定的SELECT
语句,我如何(至少使用SQL Server 2008)为SELECT
中的每一行返回2个相同的行?
我需要为我的客户创建一个导出CSV文件,该客户将使用该文件将数据导入另一个系统。那个其他系统要求数据库中的每一行数据 2行相同数据……不要问为什么,我不知道,它只是这样做。
SELECT
非常复杂,并返回近100列信息。
最简单的解决方案是使用SELECT
复制整个UNION ALL
,但这很麻烦,如果有人更新了一个选择而忘记更新另一个选择,则可能会导致错误(永远不会发生,但是我们都是人类。
是否有一种简便的INNER JOIN
技术可以用来做到这一点,还是我正在寻找临时表/ CTE?
答案 0 :(得分:3)
尝试一下:
testCompile project(':libProject').sourceSets.test.output
使用中:
CROSS APPLY (SELECT 1 AS Y UNION SELECT 2) X
答案 1 :(得分:1)
以典型的方式,在写完问题后不久,我想出了一种解决方法...
SELECT *
FROM [MyTable] MT
INNER JOIN (
SELECT 1 AS ROWNUM
UNION ALL
SELECT 2 AS ROWNUM
) SUB
ON MY.[PrimaryId] = MY.[PrimaryID]
答案 2 :(得分:1)
只需将CROSS JOIN添加到只有两个记录的表中,如下例所示:
declare @Twice as table
(
Id smallint not null
)
insert into @Twice values (1),(2)
select so.name as [Table], sc.name as [Column]
from @twice t
cross join sys.sysobjects so
join sys.syscolumns sc on sc.id = so.id
where so.xtype = N'U'
该技术的优点是您无需在查询中花太多时间,如果需要更多副本,只需将更多行添加到“乘数”表中即可。