sql - 在 sql server 中使用虚拟数据在查询结果集中添加额外的行
问题描述
我有这张桌子让我们说学生。如果表中有 2 名学生并且结果集给出了 2 行,那么无论它说什么,即“ Dummy Record
”或其他内容,我都想在其中添加 5 行带有虚拟数据的行。
SELECT FirstName, (SELECT COUNT(*) FROM Student) Total
FROM Student
如果上述查询的输出是这样的。
FirstName Total
Isaac Frempong 2
Erick Ortiz 2
我希望输出是这样的
FirstName Total
Isaac Frempong 2
Erick Ortiz 2
Dummy Data 2
Dummy Data 2
Dummy Data 2
Dummy Data 2
Dummy Data 2
我希望这是可以实现的,我不知道如何在这里应用 CASE 或 IF 语句。也许有人可以帮忙。
解决方案
一种方法是使用VALUES()
语句来构造行:
SELECT FirstName, COUNT(*) OVER () as Total
FROM Student
UNION ALL
SELECT 'Dummy', (SELECT COUNT(*) FROM Student)
FROM (VALUES (1), (2), (3), (4), (5)) v(n);
编辑:
如果您总是想要 7 行,请使用算术:
SELECT FirstName, COUNT(*) OVER () as Total
FROM Student
UNION ALL
SELECT 'Dummy', s.total
FROM (VALUES (1), (2), (3), (4), (5), (6), (7)) v(n) CROSS JOIN
(SELECT COUNT(*) as total FROM Student) s
WHERE v.n <= 7 - s.total;
s
推荐阅读
- c# - AddictedCS SoundFingerprinting 给出 netstandard 错误
- docker - 在 2020 年使用 docker-compose 以 root 身份运行命令?
- xbox-live - 我可以在 Visual Studio 2017 上使用 JavaScript 针对 UWP 进行开发吗?
- java - 为什么我有时会得到 java.net.SocketException: Socket closed on multithreaded Server
- python - 在从 crontab 调用的 python 脚本中执行 bash 命令
- javascript - 用不同的图像计算矩形的面积
- ssh - 关于ssh远程脚本执行的问题
- firebase - 颤振推送通知唤醒终止的应用程序
- c - 无法识别 DLL 文件格式
- r - 按模式子集字符向量