为数据导出创建重复行
Create duplicate rows for data export
给定一个特定的 SELECT
语句,我如何(至少使用 SQL Server 2008)return SELECT
中的每一行有 2 个相同的行?
我需要为我的客户创建一个 CSV 导出文件,客户将使用它来将数据导入另一个系统。对于我的数据库中的每个 行数据,另一个系统需要 2 行相同的数据...不要问为什么,我不知道,就是这样。
SELECT
相当复杂,return 有将近 100 列信息。
最简单的解决方案是用 UNION ALL
复制整个 SELECT
,但这很混乱,如果有人更新其中一个选择而忘记更新另一个,则可能会导致错误一个(这永远不应该发生,但我们都是人类)。
是否有一种简单的 INNER JOIN
技术可用于执行此操作,或者我正在寻找临时 tables/CTEs?
试试这个:
CROSS APPLY (SELECT 1 AS Y UNION SELECT 2) X
正在使用:
SELECT T.*
FROM SYS.TABLES T
CROSS APPLY (SELECT 1 AS Y UNION SELECT 2) X
ORDER BY T.NAME
以典型的方式,在写完问题后不久我想出了一个方法...
SELECT *
FROM [MyTable] MT
INNER JOIN (
SELECT 1 AS ROWNUM
UNION ALL
SELECT 2 AS ROWNUM
) SUB
ON MY.[PrimaryId] = MY.[PrimaryID]
只需添加带有 table 的 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'
这种技术的优点是您不需要将查询搞得一团糟,如果您需要更多副本,只需将更多行添加到 "multiplier" table.
给定一个特定的 SELECT
语句,我如何(至少使用 SQL Server 2008)return SELECT
中的每一行有 2 个相同的行?
我需要为我的客户创建一个 CSV 导出文件,客户将使用它来将数据导入另一个系统。对于我的数据库中的每个 行数据,另一个系统需要 2 行相同的数据...不要问为什么,我不知道,就是这样。
SELECT
相当复杂,return 有将近 100 列信息。
最简单的解决方案是用 UNION ALL
复制整个 SELECT
,但这很混乱,如果有人更新其中一个选择而忘记更新另一个,则可能会导致错误一个(这永远不应该发生,但我们都是人类)。
是否有一种简单的 INNER JOIN
技术可用于执行此操作,或者我正在寻找临时 tables/CTEs?
试试这个:
CROSS APPLY (SELECT 1 AS Y UNION SELECT 2) X
正在使用:
SELECT T.*
FROM SYS.TABLES T
CROSS APPLY (SELECT 1 AS Y UNION SELECT 2) X
ORDER BY T.NAME
以典型的方式,在写完问题后不久我想出了一个方法...
SELECT *
FROM [MyTable] MT
INNER JOIN (
SELECT 1 AS ROWNUM
UNION ALL
SELECT 2 AS ROWNUM
) SUB
ON MY.[PrimaryId] = MY.[PrimaryID]
只需添加带有 table 的 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'
这种技术的优点是您不需要将查询搞得一团糟,如果您需要更多副本,只需将更多行添加到 "multiplier" table.