求SQL语句(100分)

  • 主题发起人 主题发起人 jenhon
  • 开始时间 开始时间
J

jenhon

Unregistered / Unconfirmed
GUEST, unregistred user!
ACCESS表:
Table1
A B(顺序号) C D
1 1 货品1 描述1
1 1 货品2 描述2

1 2 货品1 描述1
1 2 货品2 描述2

1 3 货品3 描述3 .....(不同)

1 4 货品1 描述1
1 4 货品2 描述2

2 1 货品4 描述4
2 1 货品5 描述5
2 1 货品6 描述6

2 2 货品7 描述7
2 2 货品8 描述8

2 3 货品7 描述7
2 3 货品8 描述8


想得到:
TABLE2:
A (统计B) C D
1 3(次) 货品1 描述1
1 3(次) 货品2 描述2

1 1(次) 货品3 描述3

2 1(次) 货品4 描述4
2 1(次) 货品5 描述5
2 1(次) 货品6 描述6

2 2(次) 货品7 描述7
2 2(次) 货品8 描述8

就是说想统计出 B 的数量。

说明:
1、可以增加辅助字段;
2、原表 相同 A-B 的 (货品 +描述) 是 唯一的:货品1+描述1 <> 货品2+描述2(但货品1可能 = 货品2);
3、不同的 A-B 的 (货品 +描述) 可能有相同的:货品1+描述1 可能= 货品3+描述3;
4、原表是有序的。
5、原表是临时表,不大,大概几百行,但 相同的A-B下的 货品+描述 可能很多行(意思是说不大合适把这些 货品+描述 变成 列)

想实现这样的目的,可能不是一个SQL语句就能实现,想请教一些思路。
 
select * from (select count(bfield) from table1 group by afiled) as t1,(select distinct a,c,d from table1) as t2 where t1.a=t2.a
 
楼上的语句能行吗?没有 合并 相同a下的 c和d 啊。
 
看了你的例子,
想说对a c d分组不对吗?
 
select A,count(*) as '(统计B) ',C,D from table1 group by A,C,D
 
楼上的,group a,c,d 不行啊,象例子中 (货品3 描述3) 如果跟 (货品1 描述1)相同就会 算错了。
都很象说,这个不是一行SQL语句能解决的,不过还是期望有高手出现。
 
TO dcx0026
是想分组没错,但是跟中间的B关系很大,都不知道怎么分。
 
看了你的“说明”,一头雾水,也许是我的理解能力差。
不介意的话,把原表贴一部分出来,或许关注的人会更多。
帮你顶一下。
 
谢谢dcx0026帮顶了,没有原表,原表还没定型,就是我给的那些数据。

你仔细观察一下,就知道了。
看 A=1的情况
有4种B的组成:第1、2、4组是由 货品1 和 货品2 组成;第3组只有1种货品3
我就是想得到:
A 有3个 货品1+货品2
有1个 货品3

(A=2的例子主要是想说明,货品有很多种,而且最多的组成肯定不止 货品1+货品2 这样子的。)

我的说明里面,主要是为了表达这样的需求:
1、象A=1 货品1、货品2 可能相同,而 描述部分 不同;
2、而 货品3+描述3 则可能跟上面2种情况其中一种完全相同,不同的只是 B 下面只有 货品3一个,所以要分开统计出来。

也许需求很特殊,比较难表达,我的水平只能描述到的、想得到只有这些了,有什么不明确的地方,请多多指点。

谢谢大家了。
 
看了你的“说明”,一头雾水,也许是我的理解能力差。
不介意的话,把原表贴一部分出来,或许关注的人会更多。
帮你顶一下。
 
555555......楼上的,懒人也不应该这样懒吧?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3686192
看一下上面的帖子,根据weichao9999的代码作相应的修改,
你的要传A B两个值,得到下面的结果
A B(顺序号) C
1 1 货品1+货品2
1 2 货品1+货品2
1 3 货品3
1 4 货品1+货品2

再根据A C分组统计,
不知是否你要的结果?
 
谢谢 dcx0026,我确实是想得到你说得结果。

我仔细看了你实现的方法觉得可以的,只是觉得用储存过程麻烦,而读了那个问题下的wk_knife的方法,真是看傻了,如果那个方法可以倒是很不错。

回头我做好了,再把分打上,谢谢你了。
 
年底事情太多,没时间搞了,先结再说。
dcx0026,说真的那个weichao9999的做法挺好,比你的好,呵呵,就是那个贴给分有点不公平。
谢谢你啦!
另,我读不懂wk_knife的语句,能帮忙解说一下吗?很长,很强大 的样子....
这个贴我会继续跟进的。
 
接受答案了.
 
wk_knife的做法貌似是oracle的。你只要能清楚他句子里的那些如CONNECT BY等关键字或
函数的用法,你就能读懂。

至于你说那个贴给分不公平。
我看了一下,请允许我狡辩一下,
我猜可能是:
一、楼主失误。
二、我第一个给了正确答案,我的答案比weichao9999的答案提前了24小时。
^_^

不管怎么说,回答只求能帮到别人就好。

新年祝福...
 
谢谢dcx0026。

很有大家风范啊,比起那些动不动就骂人这么差还来这里问这么白痴问题、回去多看点什么什么书的人好多了。

不知道操作系统方面的你熟不熟?我有个问题:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3826005
你看能不能指导一二。

谢谢啦。
 
后退
顶部