首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询-填充列取决于

SQL查询-填充列取决于
EN

Stack Overflow用户
提问于 2019-07-12 23:43:42
回答 2查看 34关注 0票数 1

我的数据库逐行报告安装了软件(仅特定软件)的几个终端。下面是一个例子:

代码语言:javascript
复制
HOSTNAME | MAC ADDRESS | IP ADDRESS | SOFTWARE NAME
---------------------------------------------------
PC-AAA   | 94-da-r2-12 | xx.xx.xx.xx| TeamViewer
PC-AAA   | 94-da-r2-12 | xx.xx.xx.xx| Google Chrome
PC-BBB   | 94-da-s4-16 | xx.xx.xx.xx| TeamViewer
PC-BBB   | 94-da-s4-16 | xx.xx.xx.xx| Google Chrome 
etc.

我如何构建我的查询,以便为每个软件创建一个列,如下例所示?

代码语言:javascript
复制
HOSTNAME | MAC ADDRESS | IP ADDRESS | TeamViewer | Google Chrome
----------------------------------------------------------------
PC-AAA   | 94-da-r2-12 | xx.xx.xx.xx| TeamViewer | 
PC-AAA   | 94-da-r2-12 | xx.xx.xx.xx|            | Google Chrome
PC-BBB   | 94-da-s4-16 | xx.xx.xx.xx| TeamViewer |
PC-BBB   | 94-da-s4-16 | xx.xx.xx.xx|            | Google Chrome
EN

回答 2

Stack Overflow用户

发布于 2019-07-12 23:53:43

这是如何透视SQL查询...SQL server支持pivot、MySQL和其他不支持的服务器。

如果有固定数量的软件,则可以使用CASE WHENGROUP BY

代码语言:javascript
复制
SELECT
HOSTNAME, MAC ADDRESS, IP_ADDRESS, 
CASE
WHEN (SOFTWARE_NAME = 'TeamViewer') THen 'TeamViewer'
ELSE ''
END AS TeamViewer
CASE
WHEN (SOFTWARE_NAME = 'GoogleChrome') THen 'GoogleChrome'
ELSE ''
END AS GoogleChrome

FROM
log_table
GROUP BY
HOSTNAME, MAC ADDRESS, IP_ADDRESS
票数 0
EN

Stack Overflow用户

发布于 2019-07-13 00:16:46

使用case表达式:

代码语言:javascript
复制
SELECT HOSTNAME, MAC_ADDRESS, IP_ADDRESS,
       (CASE WHEN SOFTWARE_NAME = 'TeamViewer' THEN SOFTWARE_NAME END) as TeamViewer,
       (CASE WHEN SOFTWARE_NAME = 'GoogleChrome' THEN SOFTWARE_NAME END) as GoogleChrome
FROM log_table;

如果您希望每个主机和地址都有一行,那么可以使用聚合:

代码语言:javascript
复制
SELECT HOSTNAME, MAC_ADDRESS, IP_ADDRESS,
       MAX(CASE WHEN SOFTWARE_NAME = 'TeamViewer' THEN SOFTWARE_NAME END) as TeamViewer,
       MAX(CASE WHEN SOFTWARE_NAME = 'GoogleChrome' THEN SOFTWARE_NAME END) as GoogleChrome
FROM log_table
GROUP BY HOSTNAME, MAC_ADDRESS, IP_ADDRESS;

这不是您指定的输出,但它似乎更有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57010173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档