sqlserver行转列(sqlserver行转列值有特殊符号怎么办)
本篇文章给大家谈谈sqlserver行转列,以及sqlserver行转列值有特殊符号怎么办对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、SqlServer数据库怎么实现行转列的sql语句
- 2、sql动态多行转列,PIVOT怎么能转两列?
- 3、sqlserver2008 特殊动态行转列 急!!!
- 4、sqlserver 按一天时间段行转列 ([上午上班时间] [上午下班时间] [下午上班时间] [下午下班时间] )
- 5、SQL里面如何将竖着的列横着显示
- 6、SQLSERVER有张表,需要每晚自动实现行转列。
SqlServer数据库怎么实现行转列的sql语句
PIVOT 用于将列值旋转为列名(即行转列),在 SQL Server 2000可以用聚合函如喊数配合CASE语句实现
PIVOT 的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P
注意:PIVOT、UNPIVOT是SQL Server 2005 的语法,使用需修改数据库兼容级别(在数据库属渣皮野性-选项-兼容握肆级别改为 90 )
SQL2008 中可以直接使用
完整语法:
table_source
PIVOT(
聚合函数(value_column)
FOR pivot_column
IN(column_list)
)
View Code
UNPIVOT 用于将列明转为列值(即列转行),在SQL Server 2000可以用UNION来实现
完整语法:
table_source
UNPIVOT(
value_column
FOR pivot_column
IN(column_list)
)
[img]sql动态多行转列,PIVOT怎么能转两列?
动态最好用存储过程(年月不确定,列名不确定),对sql进行拼接迅薯坦,再写一个第二条语句关于办结的,然后把这个受理与办结通过事项进行关亩桐联查询得手侍到两列结果就好
sqlserver2008 特殊动态行转列 急!!!
你先把你上边的查询语句建立个视图吧
这个会吧?
我就直举宴接拿你的数据建表了
create table t(bf_org_shop_ID varchar(10),
prod_ID varchar(10),
sales_price int,
sales_qty int)
insert into t values ('单位1'樱猛,'aa',12,13)
insert into t values ('单位1','bb',14,15)
insert into t 正颂银values ('单位2','aa',12,17)
insert into t values ('单位2','bb',14,19)
insert into t values ('单位3','aa',12,21)
insert into t values ('单位3','bb',14,23)
执行
declare @sql varchar(4000)
set @sql = 'select [prod_ID],[sales_price]'
select @sql = @sql + ',sum(isnull(case [bf_org_shop_ID] when '''+[bf_org_shop_ID]+''' then [sales_qty] end,0)) as
['+[bf_org_shop_ID]+']'
from (select distinct [bf_org_shop_ID] from [t]) as a
select @sql = @sql+' from [t] group by [prod_ID],[sales_price]'
exec(@sql)
截图
sqlserver 按一天时间段行转列 ([上午上班时间] [上午下班时间] [下午上班时间] [下午下班时间] )
CREATE TABLE #test(
EmployeeID INT,
CardTime DATETIME
);
go
INSERT INTO #test
SELECT 1, '2011-08-01 08:01:27' UNION ALL
SELECT 1, '2011-08-01 11:33:27' UNION ALL
SELECT 1, '2011-08-01 13:32:27' UNION ALL
SELECT 1, '2011-08-01 17:30:27' UNION ALL
SELECT 2, '2011-08-01 08:22:27' UNION ALL
SELECT 2, '2011-08-01 11:21:27' UNION ALL
SELECT 2, '2011-08-01 17:32:27'
go
with myCTE AS (
SELECT
c.EmployeeID,
c.CardTime,
CASE
WHEN (convert(varchar(10), c.CardTime ,8) between '腔吵卖07:00:00' and '10:00:00')
THEN '上午上班时间'
WHEN ( convert(varchar(10), c.CardTime ,8) between '11:00:00' and '13:00:00')
THEN '上午下班时间'
WHEN ( convert(varchar(10), c.CardTime ,8) between '13:00:00' and '15:00:00')
THEN '下午上班时间 '
ELSE
'下午伍逗下班时间'碰哗
END as TimePart
FROM
#test c
)
SELECT
*
FROM
myCTE
PIVOT(
MIN(CardTime)
FOR TimePart IN ([上午上班时间], [上午下班时间], [下午上班时间], [下午下班时间] )
) tmp
EmployeeID 上午上班时间 上午下班时间 下午上班时间 下午下班时间
----------- ----------------------- ----------------------- ----------------------- -----------------------
1 2011-08-01 08:01:27.000 2011-08-01 11:33:27.000 2011-08-01 13:32:27.000 2011-08-01 17:30:27.000
2 2011-08-01 08:22:27.000 2011-08-01 11:21:27.000 NULL 2011-08-01 17:32:27.000
(2 行受影响)
SQL里面如何将竖着的列横着显示
一般这样的情况 如果是我做的话 就预先建立一个表 设置time1 time1 time3……
然后 分别逐次以 no 和日期为 time 分组 ;行标题 time 为列标题 和 值(求和)……对先前建立的表进行追加……
SQL 我不太熟悉 在access 中 完全可以做的……
还有 如果 你能够 把你的神清时间 划分成不同的时间段 而对应到固定的时间段中的话,完全 直接可以使用 一个交叉查询就可碰友以了……
但愿 这个提示 对你有游吵前所帮助……
SQLSERVER有张表,需要每晚自动实现行转列。
create procedure p_rowtocolumn
as
select erpno,max(sum(BCBH1)) as BCBH
from tb
union all
select erpno ,max(sum(BCBH2)) as BCBH
from tb
......
关于sqlserver行转列和sqlserver行转列值有特殊符号怎么办的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。