【问题标题】:Insert last row in a temp table在临时表中插入最后一行
【发布时间】:2018-08-23 17:18:19
【问题描述】:

我有一个临时表,它会吐出一堆行,如下所示:

临时表结构:

create table #final(rownum int,_CID int,Output nvarchar(max))
insert into #final
select rownum,_CID ,Output  from ...and goes the sproc

最终选择:

declare @num_records int =  @@ROWCOUNT
if @num_records > 0
select Output from #final

所以输出是:

12345abc  65432  TEST1  2383 JOHN  KIARA     N   987456321456 
12345abc  65432  TEST2  3570 JANE  lastname  A   989746532366 
12345abc  65432  TEST3  3573 KANE  AMBER     N   987454121445 

要求:我想在输出中添加显示上述记录数的最后一行。

期望的输出:

12345abc  65432  TEST1  2383 JOHN  KIARA     N   987456321456 
12345abc  65432  TEST2  3570 JANE  lastname  A   989746532366 
12345abc  65432  TEST3  3573 KANE  AMBER     N   987454121445
TRAILER   3

有没有办法做到这一点?我将很快添加一个 reextester 链接。有什么帮助吗?!

【问题讨论】:

  • 并非如此。表中的所有行都具有相同的列集,并且您建议最后一行具有与其余行不同的集。
  • @GordonLinoff 如果我对你所问的理解是正确的,是的。最后一行看起来与其余行不同。它只会有测试'TRAILER'和上述记录的计数
  • 使用UNION添加NULLs
  • 而且我什至没有提到表代表无序集,所以没有“最后一行”之类的东西。
  • @GordonLinoff 我同意你的观点,没有顺序,所以没有 最后一行,但据我了解,OP 需要将此行添加到返回的行中,这使得UNION 成为可能的解决方案。

标签: sql sql-server temp-tables


【解决方案1】:

您可以在选择行之后使用UNION,这会将行添加到SELECT语句返回的结果集的末尾不是在最后一行之后因为没有顺序这使得没有最后一行

SELECT *
FROM #final
UNION
SELECT
'TRAILER',   (SELECT COUNT(1) FROM #final), NULL,NULL,NULL,NULL,NULL,NULL;

结果:

+----------+-------+-------+------+------+----------+------+--------------+
|   Col1   | Col2  | Col3  | Col4 | Col5 |   Col6   | Col7 |     Col8     |
+----------+-------+-------+------+------+----------+------+--------------+
| 12345abc | 65432 | TEST1 | 2383 | JOHN | KIARA    | N    | 987456321456 |
| 12345abc | 65432 | TEST2 | 3570 | JANE | lastname | A    | 989746532366 |
| 12345abc | 65432 | TEST3 | 3573 | KANE | AMBER    | N    | 987454121445 |
| TRAILER  |     3 | NULL  | NULL | NULL | NULL     | NULL | NULL         |
+----------+-------+-------+------+------+----------+------+--------------+

【讨论】:

  • @sami 我修改了脚本以动态生成计数。我们也可以维护一个单独的列作为 order by,然后将值设置为 count(*)+1 以表示它是最后一列。 .或者根据最终的使用情况,我们可以最后按空值排序(假设该列没有空值)
  • 如何计算行数?
猜你喜欢
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 2014-06-03
  • 2010-10-24
  • 1970-01-01
相关资源
最近更新 更多