再求一个SQL语句,ACCESS库

看那山瞧那水 2012-03-08 03:56:07
蛋疼的SQL,搞了一天,还是写不出来。。。
一个表结构如下:
OrderNo Flag
1 1
1 1
1 2
1 3
2 1
2 1
2 3
2 1
3 1
3 2
3 2
4 1
4 1
..................
OrderNo是产品序号,从1开始
Flag是标志,范围1-3

现在要做一个汇总表,结构如下:
OrderNo Flag1 Flag2 Flag3 FlagAll
1 2 1 1 4
2 3 0 1 4
3 1 2 0 3
4 2 0 0 2

Flag1 是表示Flag=1的数量
Flag2 是表示Flag=2的数量
Flag3 是表示Flag=3的数量
FlagAll 表示总数量


用一条SQL语句怎么也写不出,是ACCESS库的。。。。
求大家帮忙了。。。
...全文
79 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
看那山瞧那水 2012-03-08
  • 打赏
  • 举报
回复
发现我原来不成功的问题了,原来是SELECT中加入了和查询无关的字段,就提示出错了,只是没往这方面想,真蛋疼~~~~~

比如:
select [无关字段A], OrderNo,
Sum(iif(Flag=1,1,0)) as Flag1,
Sum(iif(Flag=2,1,0)) as Flag2,
Sum(iif(Flag=3,1,0)) as Flag3,
Count(1) as FlagAll
from t
group by OrderNo

这样就不行了,可是我最终汇总中得有这个字段。。。。
看那山瞧那水 2012-03-08
  • 打赏
  • 举报
回复
谢谢各位,特别是3楼的开心哥.

随便说句,SERVER SQL 中可以用CASE WHEN THEN END结构,ACCESS中用IIF()函数或SWITCH()替代
beican_shijie 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sgzhou12345 的回复:]

ACCESS和MSSQL的SQL语句差不多的
[/Quote]

sql 中没有IIF函数吧?
beican_shijie 2012-03-08
  • 打赏
  • 举报
回复
sql 中没有IIF函数吧?
山东蓝鸟贵薪 2012-03-08
  • 打赏
  • 举报
回复
ACCESS和MSSQL的SQL语句差不多的
beican_shijie 2012-03-08
  • 打赏
  • 举报
回复

SELECT ORDERNO,
SUM(CASE FLAG WHEN 1 THEN 1 ELSE 0 END) FLAG1,
SUM(CASE FLAG WHEN 2 THEN 1 ELSE 0 END) FLAG2,
SUM(CASE FLAG WHEN 3 THEN 1 ELSE 0 END) FLAG3,
COUNT(1) FLAGALL
FROM MYTABLE
GROUP BY ORDERNO



不知道ACCESS 用不用AS
kaikai_kk 2012-03-08
  • 打赏
  • 举报
回复
select OrderNo,
Sum(iif(Flag=1,1,0)) as Flag1,
Sum(iif(Flag=2,1,0)) as Flag2,
Sum(iif(Flag=3,1,0)) as Flag3,
Count(1) as FlagAll
from t
group by OrderNo
看那山瞧那水 2012-03-08
  • 打赏
  • 举报
回复
沙发自己坐,格式变形了。。。。

2,497

社区成员

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

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