将行旋转为列 Firebird 2.5

2023-11-23

序列:


   
table1
=====
id - Description
----------------
|1 |Proj-x
|2 |Settlers
|3 |Bank
|4 |Newiest

table2
=====
id table1Id value alternate-value
---------------------------------
|1| 1       |12   |null
|1| 4       |6    | null 
|1| null    |22   |Desktop 
|2| 2       |7    |null
|2| 3       |11   |null
|2| null    |2    |Camby Jere 
|3| 1       |8    |null 
|3| 4       |6    |null
|3| null    |7    |Camby Jere 
  

选择指令必须返回



|table1.id|Proj-x|Settlers|Bank |Newiest|Desktop|Camby Jere
----------------------------------------------------------
|1        |12    |null    |null |null   |null   |null
|1        |null  |null    |6    |null   |null   |null
|1        |null  |null    |null |null   |22     |null
|2        |null  |7       |null |null   |null   |null
|2        |null  |null    |11   |null   |null   |null
|2        |null  |null    |null |null   |null   |2
|3        |8     |null    |null |null   |null   |null 
|3        |null  |null    |null |6      |null   |null
|3        |null  |null    |null |null   |null   |7

  

这些列的描述来自table1当 id 存在于table2或“替代值”列table1Id一片空白。

是否可以?或者我需要动态构建查询吗?


嗯,是的,是的possible(如果分两步完成),但它有点复杂,所以我不确定你是否应该这样做。首先,您可以执行以下选择:

with tmp1(MyFieldName) as
(select distinct coalesce(t2.alternate_value, t1.Description)
 from table2 t2 
 left join table1 t1 on t2.Table1ID = t1.id),
 tmp2(MyPivotSource) as
(select 'iif(coalesce(t2.alternate_value, t1.Description) = '''||MyFieldName||''', t2.MyValue, 0) as "'||MyFieldName||'"'
 from tmp1)
select 'select t2.id as "table1.id", '||list(MyPivotSource)||'from table2 t2 
left join table1 t1 on t2.Table1ID = t1.id'
from rdb$database
cross join tmp2

然后你必须运行结果。请注意,我使用的是 MyValue 而不是 Value,并且列可能不会按您想要的顺序显示(尽管这也是可能的)。

数据透视表在 Firebird 中不容易转换为 SQL,我通常更喜欢在 Excel 中而不是 Firebird 中创建数据透视表,但正如您所看到的,这是可能的。

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

将行旋转为列 Firebird 2.5 的相关文章

随机推荐

  • Git版本兼容性

    使用 Git 进行版本控制 与不同版本的 Git 协同工作的效果如何 有关的体验 好还是坏 是什么 长话短说 我正在考虑将 Git 用于一些计划的家庭项目 但由于我使用存储库中的默认包进行的大杂烩设置将意味着完全不同的版本 我计划在运行 U
  • 关于 C# 变量作用域与其他语言的问题

    首先声明一下 我以前没用过C 对它了解不多 我正在学习 Sebesta 的 编程语言概念第 9 版 一书 准备 编程语言 考试 当我读到以下摘录自 范围声明顺序 第246页 时 我有点困惑 例如 在 C99 C Java 中 所有局部变量的
  • 没有RTTI的shared_ptr?

    我正在尝试使用shared ptr在使用 xc32 1 34 gcc 4 5 2 的衍生版本 构建的嵌入式项目中 该项目已禁用 RTTI fno rtti include
  • 如何在 MVC3 中从 javascript 调用控制器方法?

    我使用 MVC3 架构 c net 当焦点更改到下一个字段 即密码字段 时 我需要立即将文本框内容 用户 ID 与数据库进行比较 所以我想对 User Id 字段使用 onblur 事件 然后调用 Controller 方法 谁能告诉我如何
  • 通过套接字发送和接收数组

    是否可以使用Python通过UDP套接字发送数组 我正在使用 Python 2 5 并尝试发送一个简单的数组 但它不起作用 它可以成功发送数组 但是当我尝试使用数组的一项来打印它时 程序崩溃了 我不确定错误是什么 因为我采取了预防措施将数据
  • 使用 psycopg2 将 PostgreSQL UUID 数组作为列表返回

    我有一个 SQL 语句 其中包含嵌入在ARRAY 像这样 SELECT foo ARRAY SELECT x from y AS bar 查询工作正常 但是在 psycopg2 结果游标中 数组作为字符串返回 如 1 2 3 而不是列表 我
  • CQL SELECT 大于索引非键列上的查询

    EDIT1 在原始问题之后添加了一个案例来描述问题 我希望查询不属于我的键的列 如果我理解正确的话 我需要在该列上定义一个二级索引 但是 我希望使用大于条件 不仅仅是相等条件 但这似乎仍然不受支持 我错过了什么吗 您将如何解决这个问题 我想
  • 使数组严格递增所需的最少更改

    我遇到一个问题 我们有一个正数数组 我们必须通过对数组元素进行零次或多次更改来使其严格增加 我们被问到使数组严格递增所需的最少更改次数 Example 如果数组是 1 2 9 10 3 15 因此 如果将 3 更改为 12 到 14 之间的
  • 打字稿中的 lodash _.get 函数

    经过一番谷歌搜索后 我感觉很多 lodash 的功能都可以使用本机打字稿来实现 但我找不到 get 函数的直接答案 在lodash中 使用 get函数警告1 let obj a b 1 let a get obj a b alert a 有
  • 权威 C++ 书籍指南和列表

    这个问题的答案是社区努力 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 这个问题试图从每年出版的数十本糟糕的 C 书籍中收集少数珍珠 与许多其他编程语言 通常是从 Internet 上的教程中学习 不同 很少有人能够在不学习一本写得
  • Javascript数字连接而不是相加,但typeof是数字而不是字符串

    我是 JavaScript 新手 我正在构建一个计算器here 我已将输入值存储在变量中 以便最终可以操纵结果以根据输入执行计算 现在我只想将所有值加在一起 然而 它们不是相加 而是连接 我使用 parseInt 来防止 javascrip
  • 我可以监控线程消息队列的大小吗?

    我们的应用程序从 DCOM 收到系统调用失败 RPC 错误 0x80010100 我们怀疑目标线程的消息队列已满 尽管我不相信这是真的 我知道队列是仅限于10 000消息我想看看在常见情况下我们是否接近这个数字 有没有办法监控线程消息队列的
  • Google Play - 未发布应用程序的下载链接?

    是否可以提供 Google Play 中未发布的应用程序的下载链接 我想在发布之前将其发送给一些人 我知道我可以只发送 APK 但我想先上演它 Thanks 是的 可以直接从 URL 下载应用程序 亚马逊应用程序商店就是以这种方式分发的 唯
  • 超时重新连接MySQL

    我有一个 Python 程序 它在后台运行数周 并且每隔一段时间就会进行数据库查询 为此 我使用 ORMpeewee 版本 2 2 1 我在用MySQL作为后端 最近 我在访问数据库时经常遇到问题 通常是在运行程序几天后 引发的错误peew
  • 自动回显 IPython 中赋值语句的结果 [重复]

    这个问题在这里已经有答案了 有没有办法让 IPython 自动回显赋值语句的结果 例如 在MATLAB 结束不带分号的赋值语句会打印赋值结果 而在语句末尾放置分号会抑制任何输出 gt gt b 1 2 b 3 gt gt b 1 2 gt
  • 在 Python 中口头格式化数字

    pythonistas 如何将数字打印为单词 就像 Common Lisp 代码的等价物 3 gt format t r 1e25 nine septillion nine hundred and ninety nine sextillio
  • Hadoop Yarn:如何使用 Spark 限制资源的动态自分配?

    在我们在 Yarn 下运行的 Hadoop 集群中 我们遇到了一个问题 一些 聪明 的人能够通过在 pySpark Jupyter 笔记本中配置 Spark 作业来消耗更大的资源块 例如 conf SparkConf setAppName
  • 为什么 TypedReference 是在幕后?它是如此快速和安全......几乎是神奇的!

    警告 这个问题有点异端 宗教程序员总是遵守良好的实践 请不要阅读它 有谁知道为什么使用类型化参考如此沮丧 隐含地 由于缺乏文档 我发现它有很大的用途 例如当通过不应该是泛型的函数传递泛型参数时 当使用object如果您需要值类型 则可能会过
  • 将 LINQ-to-SQL 谓词组合成单个谓词

    之前的一个问题 递归地 将 LINQ 谓词组合成单个谓词 与此类似 但我实际上问了错误的问题 那里的解决方案满足了所提出的问题 但实际上并不是我需要的 但它们是不同的 诚实的 给定以下搜索文本 keyword1 keyword2 keywo
  • 将行旋转为列 Firebird 2.5

    序列 table1 id Description 1 Proj x 2 Settlers 3 Bank 4 Newiest table2 id table1Id value alternate value 1 1 12 null 1 4 6