从单独的查询计算行

时间:2016-01-20 15:15:03

标签: sql sql-server sql-server-2012 rowcount

好的我已经尝试过寻找答案,我似乎无法找到它。我正在使用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现在开始工作的时候还不早,但它现在有效。谢谢大家帮助我完成这项工作。

3 个答案:

答案 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)