替代 sql server 2008 中的 First_Value()

2023-12-19

我有以下查询,它在 Oracle 和 DB2 中运行良好。但它在 SQL Server 2008 中不起作用,因为 First_Value 函数不可用于相同的 . 2008年有解决办法吗?

select NameGuid, Name, AncestorGuid, ProductGuid, PathLength
from (
    select 
    NameGuid, 
    Name, 
    AncestorGuid, 
    ProductGuid, 
    PathLength, 
    -- take every row from original query with the same Name as this,
    -- order those rows by PathLength (and NameGuid to disambiguate)
    -- and return the NameGuid of the first row in that "partition"
    first_value(NameGuid) over (partition by Name order by PathLength asc, NameGuid asc) MinNameGuid
    from ( 
        ... your original query ...
    )
)
where 
-- return rows whose NameGuid is the same as the NameGuid calculated by first_value(...)
NameGuid = MinNameGuid

注意:该查询是对我之前的查询的回答post https://stackoverflow.com/questions/20373082/query-to-return-unique-values-when-one-of-column-value-is-repeating/20374182#20374182


您可以在 SQL Server 2008 中尝试复制First_Value功能

;with CTE(NameGuid, Name, AncestorGuid, ProductGuid, PathLength) AS
(
  select 
  NameGuid, 
  Name, 
  AncestorGuid, 
  ProductGuid, 
  PathLength, 
-- take every row from original query with the same Name as this,
-- order those rows by PathLength (and NameGuid to disambiguate)
-- and return the NameGuid of the first row in that "partition"
-- first_value(NameGuid) over (partition by Name order by PathLength asc, NameGuid asc) MinNameGuid
 ROW_NUMBER() over (partition by Name order by PathLength asc, NameGuid asc) MinNameGuid
from ( 
    ... your original query ...
)a
)
Select c.NameGuid, c.Name, c.AncestorGuid, c.ProductGuid,
c.PathLength,c1.NameGUID
from CTE c
LEFT JOIN 
(SELECT NAMEGUID,Name from CTE where MinNameGuid = 1) C1
on 
c.Name = C1.Name
where c1.NAMEGUID is not NULL

SQL FIDDLE 演示 http://sqlfiddle.com/#!6/3186d/9

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

替代 sql server 2008 中的 First_Value() 的相关文章

  • SQL Server 条件流

    如果我写两个SELECT中的语句IF EXISTS条件与AND这些选择查询之间的子句 即使第一个查询是否都会执行两个查询SELECT返回假 IF EXISTS SELECT AND EXISTS SELECT BEGIN END 在这种情况
  • 如何配置 SQL Server 以允许通过 IIS 访问

    我有一个将数据存储在本地 SQL Server 2008 数据库中的 Web 服务 如果我在我的帐户下运行 Web 服务 则 Web 服务可以成功访问数据库 但是 如果我使用 DefaultAppPool IUSR 帐户 则从 Web 服务
  • 该模型已具有同名的元素 - ASP.NET

    我正在使用 ASP Net Web 应用程序 每当我尝试添加FOREIGN KEY此错误出现在数据工具操作中 SQL71508 该模型已具有同名的元素 dbo FK Sellers Users SQL71508 该模型已经有一个元素 具有相
  • 使用 pyodbc 和 sqlalchemy 连接到 SQL Server,无法使用“use database_name;”

    我的代码如下 import urllib import sqlalchemy from sqlalchemy orm import sessionmaker scoped session def list dbs sql use maste
  • TSQL - 如何在 BEGIN .. END 块内使用 GO?

    我正在生成一个脚本 用于自动将更改从多个开发数据库迁移到登台 生产 基本上 它需要一堆更改脚本 并将它们合并成一个脚本 将每个脚本包装在一个IF whatever BEGIN END陈述 然而 有些脚本需要GO语句 以便 SQL 解析器在创
  • 如何中止触发器中的多行插入

    使用 SQL Server 2005 我已经声明了一个触发 AFTER INSERT UPDATE 的触发器 在这个触发器中 我使用 WHILE 和 CURSOR 在 INSERTED 表的行上循环 当我发现一行不满足特定条件时 我希望触发
  • SQL Server 列的默认值

    当您使用列的默认值时SQL Server Management Studio表设计器 SSMS 更改您的默认值并在其周围添加括号 在所有版本和 SQL Server 的所有版本中 例如 如果您设置0作为默认值 此默认值更改为 0 我不知道为
  • 长 IN 子句是代码异味吗?

    简单的问题 想知道长 IN 子句是否有代码味道 我真的不知道如何证明它的合理性 除了我认为的味道之外 我无法解释为什么它有味道 select name code capital population flower bird from us
  • Oracle SQL - 如何使用 RANK() 或 DENSE_RANK() 和 ROW_NUMBER() 分析函数获取不同的行?

    我希望获得每个部门前 3 名不同的薪资 我能够使用RANK or DENSE RANK or ROW NUMBER 但我的表有一些工资相同的记录 下面提到的是我的查询及其结果 20部薪资前三名应该是6000 3000 2975 但是有 2
  • 在 Spring Data JPA 的本机 SQL 查询中使用命名参数

    给出了针对 DB2 数据库运行的以下查询 但它在我的 Spring Boot 应用程序中返回以下错误 我研究过 COL 1 1001应该是某种命名参数或主机变量 DB2 但一直无法找到我正在尝试做的类似示例 我只用过 1使用设置参数 Que
  • 为什么调用 take() 方法时 Slick 会生成子查询

    I use Slick http slick typesafe com 1 0 0 RC1 我对表对象有这样的定义 object ProductTable extends Table Int String String String Dou
  • SQL 内连接两个具有相同列名的表

    我有两个表 其列数不同 我不知道有多少列或名称是什么 例如表 A 和表 B TableA ID B ID variable TableB ID variable Query SELECT TableA TableB FROM TableA
  • Azure 上的 SSAS 表格?

    我正在尝试部署 ssas 表格模型 我不知道我在做什么 我用VS2013在SQL Server 2008 R2上制作了多维 我想尝试将 Tabular 与 Power BI 结合使用 所以我设置了一个 SQL Azure DB 我有 Azu
  • 实体框架 - 悲观锁定

    我想做的基本上是NHibernate 做什么 http knol google com k nhibernate chapter 10 transactions and concurrency 10 282E 296 282E 29 28C
  • SQL Server 中“WITH SCHEMABINDING”的缺点?

    我有一个数据库 其中有数百个名称尴尬的表 CG001T GH066L 等 并且我对每个表都有其 友好 名称的视图 例如 视图 CUSTOMERS 是 SELECT FROM GG120T 我想将 WITH SCHEMABINDING 添加到
  • CLR 程序集不会在 64 位 SQL Server 2005 中加载

    我们在安装 SQL Server 2005 32 位 时使用带有一些用户定义函数的程序集 我们使用如下脚本将其部署到生产环境 CREATE ASSEMBLY Ourfunctions AUTHORIZATION dbo FROM 0x4D5
  • 如何将Excel文件导入到sql server 2008

    如何在不使用导入向导的情况下使用 sql 查询将 excel 文件导入到 sqlserver2008 Express Edition 中的新表中 谢谢 普拉迪 有一篇微软知识库文章列出了所有可能的方法 http support micros
  • SQL 查询运行时间太长,asp.net 停止响应

    我有一个 SQL 查询 大约需要 10 分钟才能完成 该查询的结果显示在 asp net 网页上 这里的问题是 当我在 SQL Server 上运行查询时 它工作正常 但是当从网页触发查询时 网页上不会显示任何结果 数据库大小约为9 GB
  • MySQL JOIN 的评估顺序是什么?

    我有以下查询 SELECT c FROM companies AS c JOIN users AS u USING companyid JOIN jobs AS j USING userid JOIN useraccounts AS us
  • Postgres 服务器性能在达到一定数量的记录后急剧下降

    我正在使用游标从大型 postgres 表中检索记录 4亿条记录 使用子表对数据进行分区 我的游标定义为 select from parent table order by indexed column 同时使用 JDBC 和 psql 前

随机推荐

  • 使用属性从 H5 文件中过滤 HDF 数据集

    我有一个包含多个组和数据集的 h5 文件 每个数据集都有关联的属性 我想根据与其关联的相应属性查找 过滤此 h5 文件中的数据集 Example dataset1 cloudy attribute dataset2 rainy attrib
  • VS 代码:NoPermissions(文件系统错误):错误:EACCES:权限被拒绝

    我正在尝试将名为 app js 的文件保存在名为 js 的文件夹中 vs Code 弹出这个 无法保存 app js 无法写入文件 vscode remote wsl ubuntu 18 04 js app js NoPermissions
  • HttpClient.GetStreamAsync() 与自定义请求?

    我的目标是使用HttpClient类来发出网络请求 以便我可以将响应写入文件 解析后 因此我需要结果作为Stream HttpClient GetStreamAsync https msdn microsoft com en us libr
  • 如何在 swift 中使用 CLLocationManager 获取位置用户?

    我的视图控制器上有这段代码 但这不起作用 import UIKit import CoreLocation class ViewController UIViewController CLLocationManagerDelegate va
  • 像 Facebook 聊天系统一样向上滚动加载数据[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在开发一个聊天系统 我需要在向上滚动功能上显示聊天历史记录 例如 Facebook 聊天系统 有谁能够帮助我 事情会是这样的 HT
  • 自动或定期备份mysql数据

    我想使用 plain php 我第二喜欢的语言定期备份 mysql 数据库中的一些表 我希望它是自动化的 以便以后可以在出现问题时恢复备份 我尝试执行查询并将结果保存到文件中 最终得到的代码看起来有点像这样 sql SELECT FROM
  • 绘制特定行的每个列值

    我正在努力从数据框中绘制特定行 下面是我试图绘制的图表 我尝试过使用 ggplot 和普通图 但我无法弄清楚 Wt2 Wt3 Wt4 Wt5 Lngth2 Lngth3 Lngth4 Lngth5 1 48 59 95 82 141 157
  • PIL和cv2中不同的像素信息

    我已经使用两者加载了相同的图像PIL and cv2 但是对于相同的索引 像素信息是不同的 这是我的代码 import cv2 from PIL import Image img cv2 imread Fruits1 jpg Can be
  • 如何更改 Bootstrap 的轮播过渡从幻灯片到淡入淡出

    我在更改 AngularUi 的转换时遇到了一个小问题点击这里 http angular ui github io bootstrap 轮播过渡 我想将轮播的标准滑动过渡更改为fadeIn FadeOut过渡点击这里 http plnkr
  • 加载布局时出现异常:java.util.LinkedHashMap.eldest()Ljava/util/Map$Entry;

    尝试在图形编辑视图中加载特定布局文件时 出现以下异常 这是我下载最新版本后开始的ADT Version 20 and SDK API Level 16 java lang NoSuchMethodError java util Linked
  • Riverpod FutureProvider 在添加 .family 修饰符后将继续触发

    所以我未来有这样的提供者 final additionalCostsProvider FutureProvider autoDispose family
  • 在排序的 pandas 数据框中按时间戳搜索元素

    我有一个非常大的熊猫数据框 系列 包含数百万个元素 我需要找到时间戳小于 t0 的所有元素 所以通常我会做的是 selected df df df index lt t0 这需要很长时间 据我了解 当 pandas 搜索时 它会遍历数据帧的
  • 移动电话 - 它可以通过无线电频率进行编程广播吗?

    是否有可能让手机以特定频率发射任意无线电波 或者移动操作系统只允许更高级别的访问 如果答案是 否 正如我所期望的那样 有没有办法让手机与另一个电子设备远程通话 而无需握手等 可能不会 正如 EFraim 指出的那样 将会有适当的监管框架规定
  • 以有限优先级启动子进程

    我正在寻找一种如何使用 Python 启动进程的方法subprocess系统优先级较低的模块 我已经发现 解决方案Unix https stackoverflow com questions 2463533 is it possible t
  • Ansible:如何将文件远程复制到远程

    我需要复制文件 etc resolv conf从远程主机并将其复制到多个远程主机上 my hosts Ansible ubuntu1 4 我想从以下位置复制此文件ubuntu1 to ubuntu2 ubuntu3 and ubuntu4我
  • Rails:在请求范围内共享信息

    Rails 中在当前请求范围内共享信息的机制是什么 熟悉 Asp Net 的人会知道 有一个 HttpContext 可用于请求期间调用的所有实体 Rails 中有类似的东西吗 With around filter and Thread c
  • Javascript数组非未定义元素计数

    我创建一个数组let arr new Array 99999 但我没有把它填满arr length这是99999 我怎么知道有多少实际的 非undefined这个数组中有元素吗 有没有比寻找第一个更好的方法undefined 你可以使用Ar
  • Google Calendar API 返回 invalid_grant 和错误请求

    在我的开发环境中 我有一个用户刚刚收到以下范围的 OAuth 令牌 https www googleapis com auth calendar https www googleapis com auth calendar https ww
  • 集成测试私有类和方法

    对于单元测试 您不应该测试私有方法 是的 但是对于集成测试 使用 MSTest 或 NUnit 等单元测试框架 我非常希望针对测试 url 运行内部 API 调用 以确保当前代码当第三方 API 供应商更改其后端时有效 考虑到系统的复杂性
  • 替代 sql server 2008 中的 First_Value()

    我有以下查询 它在 Oracle 和 DB2 中运行良好 但它在 SQL Server 2008 中不起作用 因为 First Value 函数不可用于相同的 2008年有解决办法吗 select NameGuid Name Ancesto