计算来自单独查询的行

Count rows from a seperate query

好的,我已经尝试搜索此问题的答案,但似乎找不到。我正在使用 SQL Server 2012。我正在提取将要转到平面文件的数据。在平面文件的开头和结尾,我需要一个包含特定数据的页眉和页脚。我的问题出现在页脚中,因为我需要数据集中的行数。现在我已经这样设置了我的查询。这是为了仅尝试获取行数而简化的。

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 现在开始工作,虽然还不早,但现在可以工作了。谢谢大家帮助我解决这个问题。

你可以试试下面的方法

     with cte
    as
    ( select 'header' as h
union
select mytable.data as h
from mytable
    )
    select * from cte
    select 'footer'+convert(varchar(4),@@ROWCOUNT)

您的查询如下所示:

select 'header'
union
select mytable.data
from mytable
union
select 'footer '+CAST((SELECT COUNT(*) FROM mytable) AS VARCHAR(16));

您也可以尝试使用 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