求一个问题的解决方案

xu54647265 2009-11-06 05:10:15
小弟现在有3张表分别是:
TABLE_1
CORP DATA_TYPE VALUE
A 本月数 XXXXX
A 本年累计 XXXXX

TABLE_2
DATA_TYPE
本月数
本年累计

TABLE_3
CORP
A
B

现在希望,当TABLE_1.CORP='A'时,结果:
CORP DATA_TYPE VALUE
A 本月数 XXXX
A 本年累计 XXXX
当TABLE_1.CORP='B'时,结果:
CORP DATA_TYPE VALUE
B 本月数 0
B 本年累计 0
如何写SQL?
...全文
68 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xu54647265 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 acmain_chm 的回复:]
left join

SQL codeselect a.CORP,b.DATA_TYPE,b.VALUEfrom TABLE_3 aleftjoin TABLE_1on a.CORP=b.CORP
[/Quote]
这种方法,其实我研究过了。
如果这样写的话,原理是,先对表组装,后筛选,其过程相当于
在下表中,查找CORP=‘B’的数据
CORP DATA_TYPE VALUE
A 本月数 XXXX
A 本年累计 XXXX
但是,如果我们能先对表TABLE_1筛选,再组装,其过程相当于
将表
CORP DATA_TYPE VALUE
NULL(或者0) NULL(或者0) NULL(或者0)
和表
CORP
A
B
进行组装
搞出来的结果才是我想要的
但是这样,SQL成了这样的了
SELECT A.CORP,B.DATA_TYPE,A.VALUE
FROM (SELECT * FROM TABLE_1 WHERE CORP = 'B') A RIGHT JOIN TABLE_2 B ON A.DATA_TYPE = B.DATA_TYPE
其中的子查询中,CORP = ‘B’成了动态的条件部分
我个人,不知道在开发报表的整体过程中,有任何技术能提供这样的功能
xu54647265 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wwwwa 的回复:]
SELECT CORP,DATA_TYPE,SUM([VALUE]) FROM (
select A.*,C.*,0 AS [VALUE]
from TABLE_3 a ,TABLE_2 C
UNION
SELECT * FROM TABLE_1)
GROUP BY
CORP,DATA_TYPE
WHERE CORP='B'
[/Quote]
这个方法太投机取巧了。
一是会产生冗余数据
二是,这3张表只是个例子,比较理想化。实际上有可能关联的维度很多,不止2个维度,算上上面的那个缺点,维度越多,冗余数据越多。
能不能搞出一个能动态的在前台做手脚的方法?
xu54647265 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 acmain_chm 的回复:]
left join

SQL codeselect a.CORP,b.DATA_TYPE,b.VALUEfrom TABLE_3 aleftjoin TABLE_1on a.CORP=b.CORP
[/Quote]
LEFT JOIN是不好使的
LEFT JOIN 只能保证在查到数据的情况下,左表的完整
如果查不到数据的话,是不能保证左表完整的
song0511 2009-11-06
  • 打赏
  • 举报
回复
学习
ACMAIN_CHM 2009-11-06
  • 打赏
  • 举报
回复
left join

select a.CORP,b.DATA_TYPE,b.VALUE
from TABLE_3 a left join TABLE_1 on a.CORP=b.CORP
WWWWA 2009-11-06
  • 打赏
  • 举报
回复
SELECT CORP,DATA_TYPE,SUM([VALUE]) FROM (
select A.*,C.*,0 AS [VALUE]
from TABLE_3 a ,TABLE_2 C
UNION
SELECT * FROM TABLE_1)
GROUP BY
CORP,DATA_TYPE
WHERE CORP='B'
xu54647265 2009-11-06
  • 打赏
  • 举报
回复
实际上,我是在做水晶易表的时候遇到的问题。
因为我目前的报表需要一些基础数据,进行计算
但是查出来的结果,有可能是不完整的
这样的话,EXCEL的公式会取不到值
正常的话,假如一个格是:=A1
如果A1有数据就会读到数据,如果A1没数据,就直接成了#REF了
并且,以后再也不会改回:=A1了
这样的话,数据就有问题了……

如何能保证查到的数据,在结构上是完整的
如果没数据可以用0或者直接就是空的?
混合动力汽车(HEV)模型的Simscape模型(Matlab代码、Simulink仿真实现)内容概要:本文档介绍了一个混合动力汽车(HEV)的Simscape模型,该模型通过Matlab代码和Simulink仿真工具实现,旨在对混合动力汽车的动力系统进行建模与仿真分析。模型涵盖了发动机、电机、电池、传动系统等关键部件,能够模拟车辆在不同工况下的能量流动与控制策略,适用于动力系统设计、能耗优化及控制算法验证等研究方向。文档还提及该资源属于一个涵盖多个科研领域的MATLAB仿真资源包,涉及电力系统、机器学习、路径规划、信号处理等多个技术方向,配套提供网盘下载链接,便于用户获取完整资源。; 适合人群:具备Matlab/Simulink使用基础的高校研究生、科研人员及从事新能源汽车系统仿真的工程技术人员。; 使用场景及目标:①开展混合动力汽车能量管理策略的研究与仿真验证;②学习基于Simscape的物理系统建模方法;③作为教学案例用于车辆工程或自动化相关课程的实践环节;④与其他优化算法(如智能优化、强化学习)结合,实现控制策略的优化设计。; 阅读建议:建议使用者先熟悉Matlab/Simulink及Simscape基础操作,结合文档中的模型结构逐步理解各模块功能,可在此基础上修改参数或替换控制算法以满足具体研究需,同时推荐访问提供的网盘链接获取完整代码与示例文件以便深入学习与调试。

7,394

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 数据仓库
社区管理员
  • 数据仓库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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