怎样一个表中的2个查询结果合并到一个表中的两列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样一个表中的2个查询结果合并到一个表中的两列相关的知识,希望对你有一定的参考价值。

SQL SERVER
就是一个表中符合条件A的放到第一列,符合条件B的放到第二列
我是想把查出来的数据合并成一条数据,就是变成查出来的第一列数据作为第一行第一列,第二个查出来的第一列数据作为第一行第二列,以此类推,把数据字段合并起来。可以做的到这样吗?

可以这样做
SELECT
CASE WHEN 逻辑表达式A THEN 想要显示的值 ELSE NULL END AS 列名,
CASE WHEN 逻辑表达式B THEN 想要显示的值 ELSE NULL END AS 列名
FROM 表或视图名

这样执行之后,第1列不是NULL的就是符合逻辑条件A的,第2列不是NULL的就是符合逻辑条件B的追问

谢谢,不过我是想把查出来的数据合并成一条数据,就是变成查出来的第一列数据作为第一行第一列,第二个查出来的第一列数据作为第一行第二列,以此类推,把数据字段合并起来。可以做的到这样吗?

追答

那样的话理论上不行,因为可能存在既符合条件A又符合条件B的数据记录
如果确认没有这种情况倒是可以通过临时表来做(使用tempdb的临时表会比较麻烦)

参考技术A case when ... when ... end追问

谢谢,不过我是想把查出来的数据合并成一条数据,就是变成查出来的第一列数据作为第一行第一列,第二个查出来的第一列数据作为第一行第二列,以此类推,把数据字段合并起来。可以做的到这样吗?

追答

union all

MySQL 中的百分比 - 在同一个表中的两列之间

【中文标题】MySQL 中的百分比 - 在同一个表中的两列之间【英文标题】:Percentages in MySQL - Between two columns in the same table 【发布时间】:2013-05-07 21:45:03 【问题描述】:

我有一个如下所示的 MySQL 表:

Name    | Pass |  Fail | Pass Percent | Fail Percent

Abdy    | 20   |  5    |              |
Bob     | 10   |  5    |              |
Cantona | 40   |  10   |              |
Dave    | 30   |  20   |              |

我正在尝试获取百分比:

like : passpercent = (pass/pass+fail)*100

我可以用一个 MySQL 代码为两列填充表格吗?

希望表格看起来像这样:

Name    | Pass |  Fail | Pass Percent | Fail Percent

Abdy    | 20   |  5    |   80         |  20
Bob     | 10   |  5    |   66         |  33
Cantona | 40   |  10   |   80         |  20
Dave    | 30   |  20   |   60         |  40

【问题讨论】:

【参考方案1】:

这绝对有可能。

填写第二张表:

UPDATE mytable SET pass_pct=(pass/pass+fail)*100,fail_pct=(fail/pass+fail)*100

当然,您也可以在选择第一个表时生成那些(如果您不想存储结果),例如:

SELECT name,pass,fail,(pass/pass+fail)*100 as pass_pct,(fail/pass+fail)*100 as fail_pct FROM mytable

【讨论】:

以上是关于怎样一个表中的2个查询结果合并到一个表中的两列的主要内容,如果未能解决你的问题,请参考以下文章

UNION 语句连接同一个表中的两列

将一张表中的多行合并到 SQL 查询结果集中的多列中

如何为表中的两列返回相同的值

sql合并两张表(表字段不一致)到一张新表中

sql将同一个表中的两列Int数据相加,有些数据是空的

sql数据库中,如何将一个表中的多列数字合并为一列