求解一复杂问题

Luckyji 2007-03-29 10:50:42
已经有数据库表,存放内容示例
id(编号) compName addDate addValue
1 cmp1 1 100
2 cmp1 2 332
3 cmp2 1 546
4 cmp4 3 450
5 cmp3 3 1000

....


现求一视图,结果为
编号 公司名称 一月份 二月份 三月份 ... 十二月 总计
1 cmp1 100 332
2 cmp2 无记录 2



.......
...全文
259 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2007-03-29
  • 打赏
  • 举报
回复
多回復還是有好處。 :
dawugui 2007-03-29
  • 打赏
  • 举报
回复
--也不麻烦,插入临时表

select 编号 = identity(int,1,1),* into test from
(
select 公司名称,
sum(case when adddate = 1 then addvalue else 0 end) as '一月份',
sum(case when adddate = 2 then addvalue else 0 end) as '二月份',
sum(case when adddate = 3 then addvalue else 0 end) as '三月份',
sum(case when adddate = 4 then addvalue else 0 end) as '四月份',
sum(case when adddate = 5 then addvalue else 0 end) as '五月份',
sum(case when adddate = 6 then addvalue else 0 end) as '六月份',
sum(case when adddate = 7 then addvalue else 0 end) as '七月份',
sum(case when adddate = 8 then addvalue else 0 end) as '八月份',
sum(case when adddate = 9 then addvalue else 0 end) as '九月份',
sum(case when adddate = 10 then addvalue else 0 end) as '十月份',
sum(case when adddate = 11 then addvalue else 0 end) as '十一月份',
sum(case when adddate = 12 then addvalue else 0 end) as '十二月份',
sum(addvalue) as 总计
from tb
group by 公司名称
) t

select * from test
paoluo 2007-03-29
  • 打赏
  • 举报
回复
實現這個效果是不麻煩,但是就是要借用下臨時表,另外,樓主要的是“一视图”。

第一列可以沒有必要加上,直接用上面的語句實現吧。
Luckyji 2007-03-29
  • 打赏
  • 举报
回复
多谢各位老鸟,俺试一下,尽快给分
dawugui 2007-03-29
  • 打赏
  • 举报
回复
--也不麻烦,插入临时表

select id = identity(int,1,1),* into test from
(
select 公司名称,
sum(case when adddate = 1 then addvalue else 0 end) as '一月份',
sum(case when adddate = 2 then addvalue else 0 end) as '二月份',
sum(case when adddate = 3 then addvalue else 0 end) as '三月份',
sum(case when adddate = 4 then addvalue else 0 end) as '四月份',
sum(case when adddate = 5 then addvalue else 0 end) as '五月份',
sum(case when adddate = 6 then addvalue else 0 end) as '六月份',
sum(case when adddate = 7 then addvalue else 0 end) as '七月份',
sum(case when adddate = 8 then addvalue else 0 end) as '八月份',
sum(case when adddate = 9 then addvalue else 0 end) as '九月份',
sum(case when adddate = 10 then addvalue else 0 end) as '十月份',
sum(case when adddate = 11 then addvalue else 0 end) as '十一月份',
sum(case when adddate = 12 then addvalue else 0 end) as '十二月份'
from tb
group by 公司名称
) t

select * from test
paoluo 2007-03-29
  • 打赏
  • 举报
回复
如果不需要第一列,就可以像上面那麼寫。

如果需要第一列就麻煩些了。
dawugui 2007-03-29
  • 打赏
  • 举报
回复
行列转换加合计

例如有表A某些人每月消费数据如下:
id data month
001 11 1
001 12 2
001 13 3
001 14 4
001 15 5
001 16 6
001 17 7
001 18 8
001 19 9
001 110 10
001 111 11
001 112 12
002 21 1
002 22 2
002 23 3
002 24 4
002 25 5
002 26 6
002 27 7
002 28 8
002 29 9
002 210 10
002 211 11
002 212 12
要实现如下结果:
人员 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
001 11 12 13 14 15 16 17 18 19 110 111 112
002 21 22 23 24 25 26 27 28 29 210 211 212

create table 表A
(
id char(3),
data int,
month int
)
insert into 表A(id,data,month) values('001',11,1)
insert into 表A(id,data,month) values('001',12,2)
insert into 表A(id,data,month) values('001',13,3)
insert into 表A(id,data,month) values('001',14,4)
insert into 表A(id,data,month) values('001',15,5)
insert into 表A(id,data,month) values('001',16,6)
insert into 表A(id,data,month) values('001',17,7)
insert into 表A(id,data,month) values('001',18,8)
insert into 表A(id,data,month) values('001',19,9)
insert into 表A(id,data,month) values('001',110,10)
insert into 表A(id,data,month) values('001',111,11)
insert into 表A(id,data,month) values('001',112,12)
insert into 表A(id,data,month) values('002',21,1)
insert into 表A(id,data,month) values('002',22,2)
insert into 表A(id,data,month) values('002',23,3)
insert into 表A(id,data,month) values('002',24,4)
insert into 表A(id,data,month) values('002',25,5)
insert into 表A(id,data,month) values('002',26,6)
insert into 表A(id,data,month) values('002',27,7)
insert into 表A(id,data,month) values('002',28,8)
insert into 表A(id,data,month) values('002',29,9)
insert into 表A(id,data,month) values('002',210,10)
insert into 表A(id,data,month) values('002',211,11)
insert into 表A(id,data,month) values('002',212,12)
go

SELECT id as '人员' ,
SUM(CASE month WHEN 1 THEN data ELSE 0 END) AS '1月' ,
SUM(CASE month WHEN 2 THEN data ELSE 0 END) AS '2月' ,
SUM(CASE month WHEN 3 THEN data ELSE 0 END) AS '3月' ,
SUM(CASE month WHEN 4 THEN data ELSE 0 END) AS '4月' ,
SUM(CASE month WHEN 5 THEN data ELSE 0 END) AS '5月' ,
SUM(CASE month WHEN 6 THEN data ELSE 0 END) AS '6月' ,
SUM(CASE month WHEN 7 THEN data ELSE 0 END) AS '7月' ,
SUM(CASE month WHEN 8 THEN data ELSE 0 END) AS '8月' ,
SUM(CASE month WHEN 9 THEN data ELSE 0 END) AS '9月' ,
SUM(CASE month WHEN 10 THEN data ELSE 0 END) AS '10月' ,
SUM(CASE month WHEN 11 THEN data ELSE 0 END) AS '11月' ,
SUM(CASE month WHEN 12 THEN data ELSE 0 END) AS '12月'
FROM 表A
GROUP BY ID

drop table 表A

人员 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
---- --- --- --- --- --- --- --- --- --- ---- ---- ----
001 11 12 13 14 15 16 17 18 19 110 111 112
002 21 22 23 24 25 26 27 28 29 210 211 212

(所影响的行数为 2 行)

合计每个人每年的数据
人员 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 合计
001 11 12 13 14 15 16 17 18 19 110 111 112 468
002 21 22 23 24 25 26 27 28 29 210 211 212 858

SELECT id as '人员' ,
SUM(CASE month WHEN 1 THEN data ELSE 0 END) AS '1月' ,
SUM(CASE month WHEN 2 THEN data ELSE 0 END) AS '2月' ,
SUM(CASE month WHEN 3 THEN data ELSE 0 END) AS '3月' ,
SUM(CASE month WHEN 4 THEN data ELSE 0 END) AS '4月' ,
SUM(CASE month WHEN 5 THEN data ELSE 0 END) AS '5月' ,
SUM(CASE month WHEN 6 THEN data ELSE 0 END) AS '6月' ,
SUM(CASE month WHEN 7 THEN data ELSE 0 END) AS '7月' ,
SUM(CASE month WHEN 8 THEN data ELSE 0 END) AS '8月' ,
SUM(CASE month WHEN 9 THEN data ELSE 0 END) AS '9月' ,
SUM(CASE month WHEN 10 THEN data ELSE 0 END) AS '10月' ,
SUM(CASE month WHEN 11 THEN data ELSE 0 END) AS '11月' ,
SUM(CASE month WHEN 12 THEN data ELSE 0 END) AS '12月' ,
SUM(data) as '合计'
FROM 表A
GROUP BY ID

人员 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 合计
---- --- --- --- --- --- --- --- --- --- ---- ---- ---- ----
001 11 12 13 14 15 16 17 18 19 110 111 112 468
002 21 22 23 24 25 26 27 28 29 210 211 212 858
paoluo 2007-03-29
  • 打赏
  • 举报
回复
Create View V_TEST
As
Select
compName As 公司名称,
SUM(Case addDate When 1 Then addValue Else 0 End) As 一月份,
SUM(Case addDate When 2 Then addValue Else 0 End) As 二月份,
SUM(Case addDate When 3 Then addValue Else 0 End) As 三月份,
SUM(Case addDate When 4 Then addValue Else 0 End) As 四月份,
SUM(Case addDate When 5 Then addValue Else 0 End) As 五月份,
SUM(Case addDate When 6 Then addValue Else 0 End) As 六月份,
SUM(Case addDate When 7 Then addValue Else 0 End) As 七月份,
SUM(Case addDate When 8 Then addValue Else 0 End) As 八月份,
SUM(Case addDate When 9 Then addValue Else 0 End) As 九月份,
SUM(Case addDate When 10 Then addValue Else 0 End) As 十月份,
SUM(Case addDate When 11 Then addValue Else 0 End) As 十一月份,
SUM(Case addDate When 12 Then addValue Else 0 End) As 十二月份
From

Group By
compName
GO
dawugui 2007-03-29
  • 打赏
  • 举报
回复
select 公司名称,
sum(case when adddate = 1 then addvalue else 0 end) as '一月份',
sum(case when adddate = 2 then addvalue else 0 end) as '二月份',
sum(case when adddate = 3 then addvalue else 0 end) as '三月份',
sum(case when adddate = 4 then addvalue else 0 end) as '四月份',
sum(case when adddate = 5 then addvalue else 0 end) as '五月份',
sum(case when adddate = 6 then addvalue else 0 end) as '六月份',
sum(case when adddate = 7 then addvalue else 0 end) as '七月份',
sum(case when adddate = 8 then addvalue else 0 end) as '八月份',
sum(case when adddate = 9 then addvalue else 0 end) as '九月份',
sum(case when adddate = 10 then addvalue else 0 end) as '十月份',
sum(case when adddate = 11 then addvalue else 0 end) as '十一月份',
sum(case when adddate = 12 then addvalue else 0 end) as '十二月份'
from tb
group by 公司名称
Luckyji 2007-03-29
  • 打赏
  • 举报
回复
上面数据写得有点儿问题,不过大概意思就是说,显示所有的月份的数据,然后把所有公司列出来
内容概要:本文系统讲解了openEuler内核模块开发的全链路技术体系,涵盖架构原理、环境搭建、代码实现、编译调试、安全加固与生产落地。深入剖析openEuler内核的用户态/内核态隔离机制、模块动态加载原理、国密SM3签名认证、跨架构适配(x86_64/aarch64)等核心技术,通过HelloKernel实例演示模块生命周期管理,并详细阐述Makefile工程化编译、日志调试、Oops异常分析、KGDB源码级调试等关键技能。进一步覆盖内核参数传递、设备文件交互、内存管理、并发同步、中断与定时器等核心功能开发,最后结合系统监控模块综合项目,实现从理论到生产级落地的完整闭环。; 适合人群:具备Linux系统基础和C语言编程能力,从事操作系统、驱动开发或内核安全相关工作的研发人员,尤其是面向国产化平台开发的技术工程师;适合工作2年以上的中级开发者向高级进阶。; 使用场景及目标:①掌握openEuler内核模块在鲲鹏架构下的编译、签名与部署流程;②理解并实现内核级功能扩展如设备驱动、系统监控、安全加固模块;③具备独立完成模块开发、调试、性能调优及多版本兼容的能力,满足政企、工业、云边端等生产环境要求;④符合国家信息安全等级保护与信创合规标准。; 阅读建议:学习过程中应严格匹配openEuler 24.03 LTS环境,结合官方SDK工具链进行实践操作,重点关注国密签名、版本适配与安全规范;建议按章节顺序推进,先掌握基础框架再深入调试与安全机制,最终通过综合项目整合全部技能,反复演练编译排错与异常定位流程。
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: **本资源原本已设置为“0积分下载”**,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,**自动将部分资源的积分调整为非0数值**(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 **因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。** 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。**强烈建议:仅在页面显示为0积分时进行下载。** 另外,本资源描述中**并未直接提供具体的下载地址或外部链接**,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!
内容概要:本文聚焦于“基于SLSPC系列的高阶PT-WPT无线电能传输系统”的研究,系统探讨了适用于该系统的高阶谐振拓扑结构及其在无线能量传输中的性能优化机制。通过Matlab/Simulink平台完成建模与仿真,深入分析SLSPC型补偿网络在提升传输效率、增强磁耦合稳定性、扩大有效传输距离以及抗偏移能力方面的技术优势。文章从电路建模、参数设计到仿真验证全过程展开,阐明高阶谐振系统的能量传递机理,并对输出功率、转换效率等关键指标进行量化评估。同时,研究融合多学科前沿技术,涉及智能优化算法、机器学习预测(如BiTCN-SVM)、生成对抗网络(GAN)用于新能源场景生成等,展现出显著的跨领域集成特征。; 适合人群:面向从事电气工程、电力电子、无线电能传输及能源系统优化的研究生、科研人员和技术开发者;尤其适合具备Matlab/Simulink仿真基础,并关注无线充电、电动汽车供电、植入式医疗设备供能等应用方向的专业人士。; 使用场景及目标:①掌握SLSPC高阶WPT系统的建模与仿真方法;②理解并设计高效的谐振补偿网络以优化能量传输性能;③为实际无线供电系统提供理论依据与技术支撑;④拓展至非理想工况下系统鲁棒性、多物理场耦合效应及智能调控策略的研究。; 阅读建议:建议结合提供的网盘资源(含仿真模型与代码)同步实践操作,重点把握参数匹配、谐振频率调谐与仿真结果分析流程,同时可延伸学习文中提及的BiTCN-SVM功率预测、W-GAN光伏场景生成等技术,以深化综合科研能力。
代码转载自:https://pan.quark.cn/s/a4b39357ea24 CryptoJS是一个功能完备的JavaScript加密工具包,它赋予开发者在客户端执行加密任务的功能。该工具包支持多样的加密技术,涵盖了诸如AES(高级加密标准)和MD5(消息摘要算法5)等多种常用于网络安全领域的加密及哈希技术。AES,即Advanced Encryption Standard,是一种当前广泛应用的对称加密方法。其核心优势在于处理速度较快且安全性能优越,非常适合处理大规模数据的加密需求。AES的操作模式包含ECB(电子密码本)、CBC(密码块链接)、CFB(密码反馈)、OFB(输出反馈)以及CTR(计数器)等多种形式,CryptoJS均提供了这些模式的实现方案。在运用AES时,必须提供一个密钥和一个初始向量(IV)。密钥负责数据的加密与解密过程,而IV在某些操作模式下能够增强加密的随机性,从而提升整体安全性。 MD5,即Message-Digest Algorithm 5,是一种哈希函数,其作用是将任意长度的信息转换成固定长度的摘要值。尽管MD5在安全领域已不再被视作一种安全的哈希函数,因为它容易受到碰撞攻击的影响,但在某些特定场景下仍被用于数据校验目的。CryptoJS内置的MD5功能允许用户迅速计算出字符串或二进制数据的MD5哈希值。 CryptoJS工具包内含了多种加密和哈希算法的应用范例,旨在辅助开发者进行学习和实践。以AES加密数据为例,其基本操作流程如下: 1. 引入CryptoJS库: ```javascript var CryptoJS = require("crypto-js"); ``` 2. 设定需要加密的文本内容以及密钥: ```j...

22,296

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧