首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

急请问一个SQL的写法,关于数据统计!请各位前辈指教

2012-03-05 
急!请教一个SQL的写法,关于数据统计!请各位前辈指教!有两张表。如下:A表:B表:------------------- -------

急!请教一个SQL的写法,关于数据统计!请各位前辈指教!
有两张表。如下:
A表: B表:
------------------- ------- - ----------------------------
订单编号 | 品种 | 规格 | 生产号 | | 编号 | 生产号 | A品 | B品 |
------------------- -------- ----------------------------
  01 | A | A1 | 001 | | 01 | 001 | 20 | 10 |
---------------------------- ----------------------------
  02 | C | A2 | | | 02 | 002 | 20 | 8 |
-------------------- -------- ----------------------------
  03 | A | A2 | | | 03 | 005 | 30 | 10 |
-------------------- -------- ----------------------------
  04 | A | A1 | 002 | | 04 | 008 | 30 | 10 |
---------------------------- ---------------------------
..... .......
现在要现在这样的一个统计
--------------------------------------------
品种 规格A1 规格2 A品 B品
-----------------------------------------
A 2 2 40 18
--------------------------------------------
C 0 1 0 0  
------------------------------------

简单说明: 只有A1下才会有 A品 B品 ,A2下是没的

统计中SQL中不要用distinct

如果没有表达清楚的话,请指出!谢谢

[解决办法]
这统计结果是如何而来?。。
[解决办法]
--------------------------------------------
品种 规格A1 规格2 A品 B品
-----------------------------------------
A 2 2 40 18


这个2是怎么得来的?

(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
 
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
 
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。


[解决办法]
select a.品种,max(ma) as A品,max(mb) as B品,MAX(GS1) AS 规格A1 ,MAX(GS2) AS 规格A2 from (
SELECT a.品种,a.规格,sum(A品) as ma ,sum(B品) as mb,sum(iif(规格='A1',1,0)) as GS1 ,sum(iif(规格='A2',1,0)) as GS2 from a left join b on a.生产号=b.生产号
group by a.品种,a.规格) a
group by a.品种


品种 规格A1 规格2 A品 B品
-----------------------------------------
A 2 2 40 18

规格2应为1?
[解决办法]
select a.品种,max(ma) as A品,max(mb) as B品,MAX(GS1) AS 规格A1 ,MAX(GS2) AS 规格A2 from (
SELECT a.品种,a.规格,sum(A品) as ma ,sum(B品) as mb,
sum( CASE WHEN 规格='A1' THEN 1 ELSE 0 END) as GS1 ,
sum(CASE WHEN 规格='A2' THEN 1 ELSE 0 END) as GS2 from a left join b on a.生产号=b.生产号
group by a.品种,a.规格) a
group by a.品种
[解决办法]
先建立一个虚拟表 然后讲两个表的数据Union 连接 然后使用条件性的查询

热点排行