好的我已经尝试过寻找答案,我似乎无法找到它。我正在使用SQL Server 2012.我正在提取将要转换为平面文件的数据。在平面文件的开头和结尾,我需要一个包含特定数据的页眉和页脚。我的问题出现在页脚中,因为我需要数据集中的行数。现在我将我的查询设置为这样。这只是为了尝试获取rowcount而简化。
select 'header'
union
select mytable.data
from mytable
union
select 'footer'+convert(varchar(4),ROWCOUNT)
因此,为了平面文件的目的,查询可以正常工作,我只需要使用mytable.data中的行数填充ROWCOUNT。
预期产出
Header|04||160119|||2.0|160119||
D|||||...
D|||||...
Footer|ROWCOUNT||blank||
更新: 所以写了这样的代码
select 'header'
union all
select mytable.data
from mytable
union all
select 'footer'+convert(varchar(4),@@Rowcount)
它开始工作了。不完全确定为什么@@ Rowcount现在开始工作的时候还不早,但它现在有效。谢谢大家帮助我完成这项工作。
答案 0 :(得分:2)
您的查询将如下所示:
select 'header'
union
select mytable.data
from mytable
union
select 'footer '+CAST((SELECT COUNT(*) FROM mytable) AS VARCHAR(16));
答案 1 :(得分:1)
您也可以使用CTE
-
;With dataCTE
AS
(
select data, COUNT(*) over() as RowCnt
from mytable
),
footerCTE
AS
(
select 'footer'+convert(varchar(4),RowCnt) as data from dataCTE
)
select 'header' AS data
union
select data from dataCTE
union
select data from footerCTE
答案 2 :(得分:0)
您可以尝试以下
with cte
as
( select 'header' as h
union
select mytable.data as h
from mytable
)
select * from cte
select 'footer'+convert(varchar(4),@@ROWCOUNT)