SQL自连接多次

2023-12-10

我有一个存储周条目的数据库表。

Id        Value     WeekId
1         1.0000    1
2         2.0000    1

同一周最多可以有三个条目。

所以我想使用自连接可以解决这个问题

SELECT w1.Value, w2.Value, w3.Value 
FROM [List].[dbo].[testWeekEntries] as w1 
LEFT OUTER JOIN [List].[dbo].[testWeekEntries] as w2 ON w1.WeekId = w2.weekId 
LEFT OUTER JOIN [List].[dbo].[testWeekEntries] as w3 ON w2.WeekId = w3.WeekId 
WHERE w1.Id < w2.Id AND w2.Id < w3.Id

问题:它在最大条目数下工作正常,但它不会拉回包含一个或两个条目的行。

是否有不同类型的连接可以用来拉回只有一个或两个条目的行,或者是否有不同的方法来解决这个问题?


这些条目不会返回,因为您的WHERE当连接表返回时,子句显式过滤掉它们NULL values.

此解决方案向每条记录添加一个连续的行号,每周重新开始为 1。这允许您在 PIVOT 语句中使用此序列号

SQL 2000 语句

SELECT  *
FROM    (
          SELECT  (SELECT  COUNT(*) 
                   FROM    testWeekEntries 
                   WHERE   Id <= we.Id 
                           AND WeekId = we.WeekId) as rn
                  , Value
                  , WeekId
          FROM    testWeekEntries we
        ) q
PIVOT   (MAX(Value) FOR rn IN ([1],[2],[3]) ) AS PVT

SQL 2008 语句

;WITH q AS (
SELECT  rn = ROW_NUMBER() OVER (PARTITION BY WeekId ORDER BY Id)
        , Id
        , Value
        , WeekId
FROM    [testWeekEntries] as w1 
)
SELECT  Value
        , (SELECT Value FROM q q1 WHERE q1.rn = q.rn + 1 AND q1.WeekId = q.WeekId)
        , (SELECT Value FROM q q2 WHERE q2.rn = q.rn + 2 AND q2.WeekId = q.WeekId)
FROM    q
WHERE   q.rn = 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL自连接多次 的相关文章

  • SQL SERVER - COALESCE() 函数的问题

    我有一个由存储过程包装的 SQL 函数 ALTER FUNCTION dbo GetObjList filterUID int NULL filterSID varchar 32 NULL RETURNS TABLE AS RETURN S
  • 将 XML 文件导入 SQL Server(不使用 BULK)

    我正在尝试将数据从 XML 文件导入到数据库中 我使用了一个测试脚本BULK INSERT 但是当我在实时数据库上进行测试时 权限BULK被禁用 尝试 1 BULK INSERT XMLTable FROM C Radu test xml
  • 如何创建针对不同渠道不同的数据库序列?

    我们有一个要求 即需要为不同的渠道维护不同的数据库序列 例如 ABC SQN1 XYZ 1 序列号需要根据通道递增 有没有办法我们可以实现它 Thanks 你的问题不清楚 请更详细地描述要求 我知道你想要一些序列并有条件地增加它们 这样 c
  • 哪个 SQL 语句更快? (有与在哪里......)

    SELECT NR DZIALU COUNT NR DZIALU AS LICZ PRAC DZIALU FROM PRACOWNICY GROUP BY NR DZIALU HAVING NR DZIALU 30 or SELECT NR
  • SQL Server 2008插入优化

    我必须将大量行 超过 1 000 000 000 插入到 SQL Server 数据库中 该表有一个 AI Id 两个 varchar 80 列和一个以 GETDATE 作为默认值的小日期时间 最后一项只是为了听觉 但却是必要的 我想知道插
  • 加载SSIS包时出错

    我正在尝试在 SQL Server 2008R2 上执行 SSIS 包 该脚本检索远程服务器上的数据并将其复制到本地数据库 该作业每小时安排一次 SQL 代理使用代理向远程计算机验证自身身份 身份验证似乎没问题 但在加载 SSIS 包期间出
  • SQL 用逗号替换点

    我有以下代码 SELECT cast Listenpreis 1 19 as decimal 29 2 as Listenpreis FROM SL M03KNE dbo ARKALK 我得到这个值 5 59 我尝试将点替换为 komma
  • 使用 JavaScript 清理 SQL 数据

    我有一堆具有各种输入元素的表单 我想在服务器端清理这些 yes 我使用服务器端 JavaScript 将这些输入用作参数 并防止特殊字符格式错误 在你走之前 比如 这不属于 JavaScript 的领域 等等 我正在使用一个价值数百万美元的
  • 主键和代理键有什么区别?

    我用谷歌搜索了很多 但没有找到带有示例的确切直接答案 任何例子都会更有帮助 主键是表中的唯一键 您选择它可以最好地唯一标识表中的记录 所有表都应该有一个主键 因为如果您需要更新或删除一条记录 您需要知道如何唯一标识它 代理键是人工生成的键
  • Sql查询增加多个项目的项目价值价格

    我想编写 Sql 查询来按百分比增加商品价格 场景是 在表中 我有 3 列 ID 商品名称 价格 Example If item Name is T shirt Increase price by 10 item Name is Jins
  • 如何获取ms sql中float列中小数点后的位数?

    我必须计算 MS Sql Server 托管的数据库中小数点后的数字 2005 或 2008 并不重要 以纠正用户犯的一些错误 我在 Oracle 数据库上也遇到同样的问题 但事情没那么复杂 Oracle 上的底线是 select leng
  • ISDATE 相当于 DB2

    我有一个包含字符格式日期的表 我想检查日期的格式 请让我知道如何在 DB2 中做到这一点 我知道有一个函数 ISDATE 但它在 DB2 中不起作用 我在 AS400 上使用 db2 作为日期基础 请帮助我 实际上 看起来 DB2 for
  • 从 SQL 数据库反序列化数据

    我有一个小应用程序 由数据库支持 SQLite 但它与问题并不真正相关 我定义了一些类型 例如 data Whatever Whatever Int Int String String data ImportantStuff Importa
  • 数据流任务的 Foreach 循环容器

    我想从 Oracle DB 导入近 1200 万条记录 但由于 SSIS 内存缓冲区问题 我需要每年迭代我的数据流任务 即 2005 年到 2012 年 7 次 我如何使用 foreach 我的 oracle 查询来获取每年的数据 Quer
  • T-SQL 中的异步存储过程调用

    如何从另一个存储过程对存储过程进行异步调用 假设我有两个存储过程 SP1 和 SP2 这是一个长时间运行的存储过程 需要很长时间执行 并且不返回任何结果 存储过程SP1定义如下 CREATE PROCEDURE SP1 AS BEGIN c
  • 使用 C# 检索 SQL Server 中具有 varchar 数据类型的字段的大小

    我正在使用 VS 2010 和 SQL Server 2008 在 ASP NET 中创建一个项目 我想检索具有以下内容的列的大小varchar数据类型 e g Varchar 20 我想要 20 而不是最大可能的大小varchar使用 C
  • 通过sql视图向多个表插入数据

    mysql 有没有办法通过视图向多个表插入数据 MySQL 参考手册对于可更新视图是这样说的 一些视图是可更新的 也就是说 您可以在诸如以下的语句中使用它们UPDATE DELETE or INSERT更新基础表的内容 为了使视图可更新 必
  • SQL查询多个数据库

    我需要运行一个SELECT在 SQL Server 上查询并返回从同一服务器上的多个数据库中提取的信息 我有以下内容 可以工作 SELECT Name Nationality FROM dbtest dbo Staff WHERE Nati
  • 以另一个用户身份执行存储过程

    我遇到以下问题 有一个用户 A 谁必须执行存储过程 spTest In spTest的身体 sp trace generateevent叫做 问题是sp trace generateevent需要更改跟踪权限 并且我不希望用户A拥有这些权限
  • 由于表扫描,表值参数的性能较低

    我有一个将参数传递给 SQL 过程的应用程序 其中一个参数是表值参数 其中包含要包含在 where 子句中的项目 因为当我将 TVP 连接到具有 200 万行的表时 表值参数没有附加任何统计信息 所以查询速度非常慢 我还有什么选择 同样 目

随机推荐

  • 为什么 Scala 编译器不允许使用默认参数的重载方法?

    虽然在某些有效情况下 此类方法重载可能会变得不明确 但为什么编译器不允许在编译时和运行时都不是不明确的代码呢 Example This fails def foo a String b Int 42 a b def foo a Int b
  • Mongoose 填充返回空数组

    我正在尝试使用 mongoose populate 函数 但作为响应 我得到了空数组 我已经看到了多个关于此的帖子 var MerchantSchema new mongoose Schema packages type mongoose
  • iPhone 应用程序:我可以通过网站中的链接打开应用程序吗?

    我是一名 iPhone 开发新手 正在编写一个应用程序 该应用程序将成为网站的 移动版本 我想知道是否可以从网站中的链接启动我的应用程序 例如 有人在 iPhone Safari 中进入我们的网站 单击链接 我们的应用程序就会启动 那可能吗
  • Android - ListView 中的标题消失了?

    我最近遇到了一个非常奇怪的错误 而且根本不知道该怎么办 我有一个 Tabbed Fragment Activity 这意味着我需要在底部有一个 tabhost 所以我使用了 google 的 API 示例 它通过 TabHost 和管理器
  • 如何为多列显示字段使用自定义格式?

    有谁知道扩展其 正常 用途的方法 它是id默认情况下 可以轻松更改为field1 我有一个显示字段集如下 this gt displayField name desc 显示为Name Description在模板文件中调用时 我知道这是一个
  • 由于停靠面板,无法从顶部调整无边框 winform 的大小

    我制作了一个无边框的Windows窗体 添加了阴影 拖动的能力 以及从任何角度调整其大小的能力 这就是我所做的 有点乱 using System Runtime InteropServices public class MAIN DllIm
  • 在python opencv中通过网络发送实时视频帧

    我正在尝试将我用相机捕获的实时视频帧发送到服务器并处理它们 我使用 opencv 进行图像处理 使用 python 进行语言处理 这是我的代码 client cv py import cv2 import numpy as np impor
  • com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:“where 子句”中的未知列“Smith”

    希望你能帮我 我收到错误 com mysql jdbc exceptions jdbc4 MySQLSyntaxErrorException 未知 where 子句 中的 Smith 列 我有一个名为 aspirante 的数据库 它有一个
  • ApplicationRoute 的加载状态

    使用 余烬1 7 0 我有一些服务器端数据 希望在转换任何路由之前将其加载到我的 ember 应用程序中 我的多个 但不是全部 其他路线 控制器需要此数据 我想我可以在 ApplicationRoute 中加载这些数据model方法 它工作
  • 如何检查处理 Celery 任务的队列

    我目前正在利用芹菜来执行定期任务 我是芹菜新手 我有两个工作人员运行两个不同的队列 一种用于缓慢的后台作业 另一种用于用户在应用程序中排队的作业 我正在 datadog 上监视我的任务 因为这是确认我的工作人员正常运行的简单方法 我想要做的
  • $("*", $("#container1")) 和 $("#container2").find("*") 之间有什么区别?

    有什么区别 container1 and container2 find 我一般用AA 但不太好的话可以多直到奇数
  • Rhino:从 Java 内部返回 JSON

    我有 Java 中 JSON 序列化对象的字符串表示形式 例如 name John age 24 我如何解析并返回到JavaScript上下文 就这样JSON parse str 在 JS 中可以工作吗 谢谢 最新版本的Rhino只有四个a
  • 在 iPhone 中实现 tesseract OCR

    我想在我的项目中实现手写识别 例如当用户写入时A在屏幕上 然后屏幕应该显示A 我在谷歌上搜索过 到目前为止我发现 tesseract OCR 但我不明白是什么tesseract OCR以及如何在我的项目中实现这一点有人可以提供演示教程吗te
  • zsh:找不到命令:mongo

    我按照此处找到的官方说明进行操作 在 Mac OS Big Sur 上 https docs mongodb com manual tutorial install mongodb on os x 当尝试运行时mongo 我收到 zsh c
  • 我可以将自定义 JsonSerializer 设置为 RestSharp RestClient

    我正在使用 RestSharp 包中的自述文件中提到的自定义 JsonSerializer 到目前为止 我将自定义序列化器添加到每个请求中 RestRequest request new RestRequest scans Method P
  • Highcharts:如何获取缩放窗口中的数据点?

    我是 Highcharts 的新手 我有一个折线图 以下是类别 9 7 14 9 8 14 9 9 14 9 10 14 9 11 14 9 12 14 9 13 14 9 14 14 9 15 14 9 16 14 9 17 14 9 1
  • 自定义事件文档 onContentChange

    这里 jsFiddle 来测试示例 我目前正在编写一个 jQuery 片段来处理 DOM 中由任何 jQuery 触发 的任何 html 内容更改domManip功能 扩展一些功能 不确定这是最好的方法 所以欢迎任何建议 如果绑定到文档 此
  • Tumblr OAuth 图片帖子给了我 401/“无效的 OAuth 凭据”

    我有一个 iOS 应用程序 可以将图像发布到多个服务 包括 Twitter 并且我正在尝试将该支持扩展到 tumblr 我已经为 OAuth 1 0a 标头逻辑改编了一些开源代码 其运行良好 足以成功用于 twitter twitpic 和
  • 将全名拆分为名字和姓氏

    我有一份客户名单 其姓名为全名 我想创建一个以全名作为参数并分别返回名字和姓氏的函数 如果这是不可能的 我可以有两个单独的函数 一个返回名字 另一个返回姓氏 完整姓名列表包含最多三个单词的姓名 我想要的是这样的 当全名由两个单词组成时 第一
  • SQL自连接多次

    我有一个存储周条目的数据库表 Id Value WeekId 1 1 0000 1 2 2 0000 1 同一周最多可以有三个条目 所以我想使用自连接可以解决这个问题 SELECT w1 Value w2 Value w3 Value FR