地点名称 时间 关键字1 值
杭州 2015-3-16-1 SO2 10
杭州 2015-3-16-2 SO2 12
杭州 2015-3-16-3 SO2 13
杭州 2015-3-16-1 NO2 7
杭州 2015-3-16-2 NO2 11
杭州 2015-3-16-3 NO2 8
SQL怎么查询变成
地点名称 时间 SO2值 NO2值
杭州 2015-3-16-1 10 7
杭州 2015-3-16-2 12 11
杭州 2015-3-16-3 13 8
可以实现么

--动态
DECLARE @SQL VARCHAR(8000)--SQL2005+可以用VARCHAR(MAX)代替
SET @SQL='SELECT 地点名称,时间'
SELECT @SQL=@SQL+'
,ISNULL(MAX(CASE WHEN 关键字1='''+关键字1+''' THEN 值 END),0)['+关键字1+']'
FROM TB GROUP BY 关键字1
SET @SQL=@SQL+'FROM TB GROUP BY 地点名称,时间'
PRINT @SQL
EXEC(@SQL)
--静态
SELECT 地点名称,时间
,ISNULL(MAX(CASE WHEN 关键字1='NO2' THEN 值 END),0)[NO2]
,ISNULL(MAX(CASE WHEN 关键字1='SO2' THEN 值 END),0)[SO2]
FROM TB
GROUP BY 地点名称,时间
select 地点名称,时间,
sum(case when 关键字1='SO2' then 值 else 0 end) as SO2值,
sum(case when 关键字1='NO2' then 值 else 0 end) as NO2值
from tablename
group by 地点名称,时间
order by 地点名称,时间
select productname 品名, max(case supplier when '供应商A' then price else 0 end) 供应商A, max(case supplier when '供应商B' then price else 0 end) 供应商B, max(case supplier when '供应商C' then ...
有时候多行数据需要一行显示, 这就需要行转列的sql啦. 首先 ,要知道 行转列当然是要以某个字段进行分组的,然后再根据表中 一个字段的值做转列后的字段名, 这个值所对应的另一个字段作为 值 示例: 表名: XX班 ...
一般在做数据统计的时候会用到行转列,假如要统计学生的成绩,数据库里查询出来的会是这样的,但这并不能达到想要的效果,所以要在查询的时候做一下处理。 CREATE TABLE TestTable( [Id] [int] IDENTITY(1,1) NOT ...
最近遇到了一个很是动态化的查询需求,要求的列数是动态加载的,而不是固定的列数,并且列内容的由来都是通过动态联查得到的,所以很是棘手,需要用到行转列的这种sql查询方式。 一、行转列的简单用法理解 ...
示例1: select country, sum(case when type='A' then money end) as A, sum(case when type='B' then money end) as B, sum(case when type='C' then money end) as C from table1 ...--------...
sql查询结果的行记录转换为列属性 数据库查询结果后,某一列的结果意义是代表了不同的属性,根据不同的属性,进行转化为列。 实战1 转化前 mysql> select logid,game,account,platform from tbaccess_mgame ...
一、多行转成一列(并以","隔开)表名:A表数据:想要的查询结果:查询语句:SELECT name , value = ( STUFF(( SELECT ',' + value FROM A WHERE name = Test.name ...
文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储...
行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 的运算符PIVOT来实现。用传统的方法,比较好理解。层次清晰,而且比较习惯。 但是PIVOT 、UNPIVOT提供的语法比一系列复杂的SELECT…CASE 语句中所指定的...
多行转字符串 这个比较简单,用||或concat函数可以实现 ? 1 ... select concat(id,username) str from app_userselect ...实际上就是拆分字符串的问题,可以使用 substr、instr、regexp_substr函数方式 ...
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列... 扩展阅读一:参数化表名、分组列、行转列字段、字段值; 扩展阅读...
表有三列,stunamem,subject score. 表中的数据有: 张三 语文 0 李四 语文 4 王二 英文 90 张三 数学 333 要求查询结果如下 学生 语文 英文 数学 张三 0 0 333 李四 4 0 0 没有分数的默认为0 求...
一、多行转成一列(并以","隔开)表名:A表数据:想要的查询结果:查询语句:SELECT name , value = ( STUFF(( SELECT ',' + value FROM A WHERE name = Test.name ...
各位网络大神,最近遇到一个问题,在我数据库中取出的数据只是这样显示的: !... 现在我们想将上图那种取出的数据...单条行专列我会处理,但是多条行转列不知如何处理,望各位大神指点。 如问题解决也可以发20私包感谢。
问题如下:表结构如下要实现的效果如下:这个涉及行专列问题,SQL语句如下:insert into product values('13303','茶杯','蓝色','a',20); insert into product values('13303','茶杯','蓝色','b',10); insert into ...
Title choose Text 第一题 A 第一题答案A 第一题 B 第一题答案B 第一题 C 第一题答案C 第一题 D 第一题答案D 第二题 A 第二题答案A 第二题 B 第二题答案B 第二题 C 第二题答案C 第二题 D
问题链接:关于Mysql 的分级输出问题情景简介学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当作列。数据表里面数据如下图,使用姓名+课程作为联合主键(有些需求可能不需要联合...
前景 apply_id bigint COMMENT ‘申请id’, oss_key string COMMENT ‘存储在oss上的路径’, type string COMMENT ‘类型,10-身份证数据,20-人脸照,30-运营商,40-魔杖报告,50-补充信息’, SELECT apply_id ...
号分隔起来,并显示成一行,接下来上例子,看看这个神奇的函数如何应用准备测试数据 SQL Code 123456 create table test(id number,name varchar2(20));insert into test values(1,'a');insert into t...
CREATE TABLE [dbo].[a]([id] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,[name] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,[value] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL) ON [PRIMARY]GO--创建表...
在 SQL 数据库中,生成列(Generated Column)是指由表中其他字段计算得到的列,因此也称为计算列(Computed Column)。 本文介绍各种主流数据库对于生成列/计算列的实现,包括 Oracle、MySQL、SQL Server、...
SQL Server 动态行转列
create database arron go use arron go -- createTable init Data create table students ( name varchar(25), class varchar(25), grade int ...insert into students values ('张三','
create table Student (Id int,Namevarchar(10)) insert Studentselect1 ,'张三'union allselect2 ,'李四' create table ScoreType(Idint,ScoreName
一、行转列 即将原本同一列下多行的不同内容作为多个字段,输出对应内容。 建表语句 DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score( id INT(11) NOT NULL auto_increment, ...
表样: 人员 月份 部门 工作日用时 周末用时 节假日用时 A 01 人事 20 30 40 A 02 人事 10 50 60 B 01 研发 100 200 300 B 02 研发 400 500 600 怎么能够转成以下数据结构: ...
oracle 行转列方法 如果有这样的需求,数据库插入的有A表这样的结果,展示要变成B表这样的结果(下边的这个图是摘自别人的,我主要说pivot函数那种方式) 对于这样的需求即需要行转列了。 1、第一种...
查询表的列名 select column_name from INFORMATION_SCHEMA.COLUMNS where TABLE_SCHEMA=‘sfs_server’ and TABLE_NAME=‘t_funds_detail’; 转为行 select GROUP_CONCAT(column_name) from INFORMATION_SCHEMA....
废话不多说,直接上sql,自己领悟去吧: select pmp.panel_id, pmp.project_name ,'poll_weight' 指标名, pmp.poll_weight as score from p_monitor_project pmp union select pmp.panel_id, pmp.project_name,'...
SQL SERVER 2008两行两列数据,如何显示为一行三列