sql-SQL 列转行如何实现?

问题描述

SQL 列转行如何实现?

这种什么实现?我的语句是:select ISNULL(fritemcd,tofritemcd)as fritemcd, qty,qty2 from
(SELECT a.fritemcd,a.qty FROM iniop03t a
left join biitm01t b on fritemcd=itemcd
WHERE a.movedt='20150204' AND a.frstockcd IN ('A710','A711','A713','a712' )and b.itemkind='2') T
full join
(SELECT a.fritemcd tofritemcd,a.qty as qty2 FROM iniop03t a --入
left join biitm01t b on fritemcd=itemcd
WHERE movedt='20150204' AND tostockcd IN ('A710','A711','A713','a712') and b.itemkind='2')F on T.fritemcd=F.tofritemcd

结果如下:

解决方案

比如你这个表为table,列为fritemcd,qty,qty2 你可以这么写

select gritemcd, qty, 0 qty2 from table
union all
select gritemcd, 0, qty2 from table

再加上你的条件即可

解决方案二:

再加个排序条件,即达达你的要求

时间: 2024-09-29 04:31:25

sql-SQL 列转行如何实现?的相关文章

SQL中行转列和列转行

行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现.用传统的方法,比较好理解.层次清晰,而且比较习惯. 但是PIVOT .UNPIVOT提供的语法比一系列复杂的SELECT...CASE 语句中所指定的语法更简单.更具可读性.下面我们通过几个简单的例子来介绍一下列转行.行转列问题. 我们首先先通过一个老生常谈的例子,学生成绩表(下面简化了些)来形象了解下行转列 CREATE TAB

SQL行转列和列转行代码详解

行列互转,是一个经常遇到的需求.实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现. 在读了技术内幕那一节后,虽说这些解决方案早就用过了,却没有系统性的认识和总结过.为了加深认识,再总结一次. 行列互转,可以分为静态互转,即事先就知道要处理多少行(列);动态互转,事先不知道处理多少行(列). --创建测试环境 USE tempdb; GO IF OBJECT_ID('dbo.Orders') IS NOT NULL DROP TABLE dbo.Orde

.net-sql列转行,求sql大神帮忙解决。

问题描述 sql列转行,求sql大神帮忙解决. 如题 姓名 部门 题目ID 题目答案 A 编辑部 1 tt A 编辑部 2 yy A 编辑部 3 hh B 测试部 1 tt B 测试部 3 cc 我想要这样的结果 姓名 部门 第一题 第二题 第三题 ...等 A 编辑部 tt yy hh B 测试部 tt NULL CC 解决方案 你的题目只有1,2,3还是不确定呢 解决方案二: SELECT distinct 姓名 ,部门 ,LEFT(UserList,LEN(UserList)-1) as

重温SQL——行转列,列转行

行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现.用传统的方法,比较好理解.层次清晰,而且比较习惯. 但是PIVOT .UNPIVOT提供的语法比一系列复杂的SELECT...CASE 语句中所指定的语法更简单.更具可读性.下面我们通过几个简单的例子来介绍一下列转行.行转列问题. 我们首先先通过一个老生常谈的例子,学生成绩表(下面简化了些)来形象了解下行转列  CREATE TA

SQL 列转行、行转列

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 一.行转列   create TAble TA (NAME    varchar(10) ,SUBJECT varchar(10) ,RESULT  int)    insert into TA(NAME , SUBJECT , RESULT) values('张三' , '语文' , 74) insert into TA(NAME , SUBJECT , RESULT)

sql 行转列 PIVOT 列转行 UNPIVOT

原文:sql 行转列 PIVOT 列转行 UNPIVOT 一: 现有表一(t_table1),想转为表二(t_table2)的格式. 表一: 年 公司 收入 2013 公司1 12 2013 公司2 22 2013 公司3 32 2012 公司1 42 2012 公司2 52 2012 公司3 62     表二: 年 公司1 公司2 公司3 2012 42 52 62 2013 12 22 32     可使用sql2005之后提供的PIVOT   具体操作如下:   select  *  f

SQL Server 行转列和列转行实例讲解

1.列转行 数据经过计算加工后会直接生成前端图表需要的数据源,但是程序里又需要把该数据经过列转行写入中间表中,下次再查询该数据时直接从中间表查询数据. 1.1 列换行语法 table_source UNPIVOT( value_column FOR pivot_column IN(<column_list>) ) 1.2  行转列案例 WITH TAS(    SELECT 1 as TeamId,'测试团队1' as Team,80 'MEN',20 'WOMEN'    UNION    

[转载]SQL行转列,列转行

原文地址:http://www.cnblogs.com/kerrycode/archive/2010/07/28/1786547.html  行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现. 用传统的方法,比较好理解.层次清晰,而且比较习惯. 但是PIVOT .UNPIVOT提供的语法比一系列复杂的 SELECT...CASE 语句中所指定的语法更简单.更具可读性.下面我们通过

sql列转行

  CREATE TABLE [Test] ( [id] [int] IDENTITY (1, 1) NOT NULL , [name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [subject] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Source] [numeric](18, 0) NULL ) ON [PRIMARY] GO INSERT INTO [test] ([nam

sql合并列转行,在线等

问题描述 sql合并列转行,在线等 有表 wareid makeno qty busno 10001 11111 5 111 10001 11111 10 222 10002 22222 11 111 10002 33311 20 222 得到 wareid makeno qty busno 10001 11111 5@10@ 111@222@ 10002 22222 11@0@ 111@0@ 10002 33311 0@20@ 0@222@ 解决方案 可以这么写 select wareid ,