使用CTE简化SQL语句

2024-02-25

我有一个如下查询:

SELECT A.a, A.b, B.c,
(CASE WHEN ... THEN ... ELSE ... END) AS CalculatedValue,
B.d
FROM    dbo.TableA A INNER JOIN
        dbo.TableB B ON (...)
WHERE (CASE WHEN ... THEN ... ELSE ... END) BETWEEN @DayStart AND @DayEnd
GROUP BY A.a, (CASE WHEN ... THEN ... ELSE ... END), B.c

避免多次重复完全相同的表达式:(CASE WHEN ... THEN ... ELSE ... END)我想定义一个 CTE 并在 select、where 和 group by 表达式中使用查询这样的表CalculatedValue

不幸的是,这不起作用,因为选择需要已经包含group by创建时CTE

有没有其他方法可以用来不重复CASE WHEN...很多次?


Use CROSS APPLY http://technet.microsoft.com/en-us/library/ms175156.aspx,可用于定义别名字段,然后引用它们:

SELECT A.a, 
       A.b, 
       B.c,
       CalculatedValue,
       B.d
FROM    
       dbo.TableA A 
INNER JOIN
        dbo.TableB B 
        ON (...)
CROSS APPLY 
        (SELECT (CASE WHEN ... THEN ... ELSE ... END)) CxA(CalculatedValue)
WHERE CalculatedValue BETWEEN @DayStart AND @DayEnd
GROUP BY A.a, CalculatedValue, B.c

The CxA只是一个别名,您可以随意命名。

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

使用CTE简化SQL语句 的相关文章

  • 如何在mysql中选择具有相同值集的列?

    我的桌子是 patients pid name city disease did dname has disease did pid 我想列出具有相同疾病组的患者 pid 和 did 分别是患者和疾病表中的主键 并且是 has diseas
  • 我怎样才能知道oracle 9i中哪些值是数字

    我有这个包含 varchar 的数据库 我想知道哪些记录保存数值 我试过REGEXP COUNT和其他 但我在 9i 上运行 我认为这是针对 10g gt 我怎样才能实现这个目标 I tried select to number my co
  • 给定“java.sql.SQLIntegrityConstraintViolationException”是否可以确定错误的列

    鉴于我有一个类型为 java sql SQLIntegrityConstraintViolationException 的异常 是否可以以编程方式确定错误的列 或多列 我问这个问题是因为我想将错误映射回客户端的数据模型以指示错误的字段 例如
  • MySQL“LIKE”搜索不起作用

    我通过 LOAD DATA INFILE 在 MySQL 中导入了一个 txt 数据库 一切似乎都正常 唯一的问题是 如果我使用以下查询在数据库上搜索记录 SELECT FROM hobby WHERE name LIKE Beading
  • 串行类型的外键 - 确保始终手动填充

    我有两个表 国家和地区 CREATE TABLE Countries id SERIAL name VARCHAR 40 NOT NULL PRIMARY KEY id CREATE TABLE Regions id SERIAL coun
  • Linq To SQL - 拥有和分组依据

    我下面这个查询工作正常 不过我想使用 Linq 来实现它 select u ID u NAME from Task t join BuildingUser bu ON bu ID BUILDING t ID BUILDING join Us
  • SQL:如何在按部分分组的查询中使用子查询?

    如何在按部分分组的查询中使用子查询 我使用 SQL Server 2008 R2 和 Delphi 2010 我收到此错误 Cannot perform an aggregate function on an expression cont
  • 需要按天分割日期时间范围

    我有一个需要根据日期时间拆分的表 输入表 ID Start End A 2019 03 04 23 18 04 2019 03 04 23 21 25 A 2019 03 04 23 45 05 2019 03 05 00 15 14 所需
  • SQL 查询用于计算每个客户的订单数量和总金额

    我有两张桌子Order与列 OrderID OrderDate CID EmployeeID And OrderItem与列 OrderID ItemID Quantity SalePrice 我需要返回客户 ID CID 每个客户的订单数
  • 为什么使用 SQL Server 2008 地理数据类型?

    我正在重新设计客户数据库 我想要与标准地址字段 街道 城市等 一起存储的新信息之一是地址的地理位置 我想到的唯一用例是 当无法找到地址时 允许用户在 Google 地图上绘制坐标 这种情况通常发生在该地区是新开发的或位于偏远 农村地区时 我
  • 按空值和非空值分组

    我有一个包含用户 facebook ID 的表 我必须报告谁在使用 facebook 或不使用 对于 facebook 用户 数据行包含一个数字 否则包含 null 我的结果必须是这样的 NbUsers Facebook 1000 no 5
  • Reporting Services 在哪里存储其日志文件

    最相关的谷歌结果似乎表明 为了访问日志 我们必须将您自己的日志表部署到数据库并制作报告服务写入它 http technet microsoft com en us library ms157403 aspx 简而言之 Reporting S
  • 如何搜索例程的内容/(SP-触发函数)

    我需要在数据库内所有例程的例程主体 存储过程 函数 触发器 中搜索文本 我该怎么做 Thanks SELECT OBJECT NAME object id FROM sys sql modules WHERE definition LIKE
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co
  • SELECT max(x) 返回 null;我怎样才能让它返回0?

    运行以下命令时如何返回 0 而不是 null SELECT MAX X AS MaxX FROM tbl WHERE XID 1 假设没有XID 1的行 or SELECT coalesce MAX X 0 AS MaxX FROM tbl
  • 我不断收到错误“关系 [TABLE] 不存在”

    我一直在尝试查询数据库中的两个表 在服务器资源管理器中 我可以看到两个表 甚至可以看到其中的列 我们将它们称为 Schema table1 和 Schema table2 其中 Schema 的第一个字母大写 我尝试运行以下查询 selec
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么

随机推荐

  • 恢复 Github Desktop 中丢失的隐藏更改 (Windows 10)

    作为初学者使用 Github Desktop Windows 10 上的 v 2 9 6 当在分支之间来回移动时 我会存储更改以将其保留在分支上以供以后使用 但是连续执行两次 它实际上会覆盖并删除之前的存储 而不是将更改堆叠到存储中 因此我
  • Visual Studio 自动完成 C++ 的 Doxygen 标签

    有没有办法让 Visual Studio 自动将 doxygen 标签放入 C 源文件中 我的意思是例如这段代码 int foo bool p 如果我输入 在其之上 Visual Studio 自动生成以下行
  • 负整数返回零

    一位朋友只是抛出了一些类似于以下 C 代码的代码 int i return i lt 0 0 i 这让我思考 有什么 不同 的方式来返回负整数零或当前正值 更具体地说 如果可能的话 我正在寻找按位运算 顺便说一句 我知道Math Max 0
  • 如何在这个程序中使用枚举?

    f open Student dat r opens Student dat file roll1 input Enter roll to be found to find a record in a list using a roll n
  • 移动浏览器上的“自动播放”HTML5 音频播放器

    我正在为移动用户创建一个 HTML5 音乐网站 目标是让它完全在移动浏览器中运行 问题是 当用户选择要播放的曲目时 他们会被带到 播放器 页面 然后我在 HTML5 音频元素中进行 AJAX 并将 autoplay 属性设置为 true 这
  • jQuery 从元素中删除特定文本

    我想从我的网站的元素中删除文本 By 我希望文本的其余部分保留在那里 我怎样才能用 jQuery 实现这一点 谢谢 The HTML div By Anonymous From Minnesota div 我希望它只是 div Anonym
  • JPanel 和 CardLayout 出现 NullPointerException 错误

    我正在为课堂开发酒店管理软件 我的代码遇到了一些问题 此时 我只是尝试将我在单独的类中创建的 JPanel 添加到我的主 gui 中 任何帮助将不胜感激 谢谢 Exception in thread main java lang NullP
  • Python语音识别速度很慢

    我目前正在开发一个智能助手程序 基本上它只是听用户说的话 并据此对代码执行某些操作 直到今天我切换到笔记本电脑时 它都运行良好 该程序不会打印出任何错误 但它也不会打印出我所说的内容 我正在使用Python语音识别 https pypi o
  • 无法使用 PHP 和 Nginx 让 Zorba 在 Windows 7 上运行

    我正在尝试在 Windows 7 计算机上安装 Zorba 的帮助指示 http zorba xquery com doc zorba 2 0 zorba html php windows tutorial html 我已经完成 验证 Zo
  • 将 MSSQL 中除第一个字符和空格之外的字符串的所有字符替换为星号

    我想知道是否可以通过函数对 mssql 中的敏感数据进行哈希处理 并为所有字段保留第一个字符 原样 例子 Jon Kirk 名字应提取为 J K 我首先发布了一个递归解决方案 这更快 declare name varchar 20 Jon
  • Django 的 Capistrano

    有谁知道 Django 中 Capistrano Webistrano 的等效版本吗 Fabric http fabfile org是一个基于Python的应用部署系统 它可用于部署 Django 项目
  • git 没有完全退出(退出代码 128)[重复]

    这个问题在这里已经有答案了 我收到这个错误 尝试了所有解决方案如何解决 TortoiseGit 上的 git 未完全退出 退出代码 128 错误 https stackoverflow com questions 9617336 how t
  • Rails 3.1,capybara-webkit,如何在链接内执行javascript?

    我可以在与水豚的链接中执行javascript吗click link next page 该链接如下所示 a href Next Question a 我在 github 的 capybara 上读到 我可以通过单击提交按钮来提交表单 如下
  • OpenCV 中如何知道图像是否为 RGB?

    我使用 OpenCV 库用 C 编写了一个程序 该程序从网络摄像头录制视频 然后将其分割成帧 我想知道帧是否为 RGB 因为我想访问每个像素的 RGB 属性 用于捕获的编解码器是 CV FOURCC M J P G 如何获取 RGB 色彩空
  • pycharm中的源和资源根是什么?

    我正在开发一个关于 NLP 的项目 我有一个很大的语料库和一些代码 我想在我的项目中将它们分开 但我想知道选择正确的名称是什么 数据与代码就像汇编中的数据段和代码段 或者 来源和资源正如我的一位朋友所坚持的那样 这是正确的术语 我还在 py
  • Android 连接到本地主机

    我试图通过 wamp 服务器将我的 Android 应用程序连接到本地主机 url 但它不起作用 我的目标是获取 json 数据并解析这些数据 对于我的测试 我使用的是设备而不是模拟器 并且我使用 AndroidManifest xml 中
  • 从函数内的 JSON 响应更新全局变量

    我正在尝试从 JSON 响应中获取一些变量并将其显示在自定义表视图中 问题是变量永远不会更新 更多解释是我的代码 func getAddresses let todosEndpoint String my link guard let to
  • 从 Ubuntu 10.10 升级到 12.04 后,multiprocessing.map 和 joblib 仅使用 1 个 cpu

    我有一些完美运行的 python 代码 它使用多处理模块并以 100 的速度加载我机器上的所有 8 个 CPU 当我从 Ubuntu 10 10 升级到 12 04 后 最明显的事情 也许我做了其他什么事情破坏了一切 它停止工作 经过大量调
  • neo4j cypher 单标签与多标签性能

    考虑以下示例 一个基于 Neo4j 的 wiki 其中包含大量文章和更多文章版本 所有编辑的历史记录 使用多个标签来标识每个节点有多大区别 article Article Public article Article Version 然后查
  • 使用CTE简化SQL语句

    我有一个如下查询 SELECT A a A b B c CASE WHEN THEN ELSE END AS CalculatedValue B d FROM dbo TableA A INNER JOIN dbo TableB B ON