求sql语句 - Delphi / 数据库相关
access表如下:
地点 数量 种类
a 2 甲
a 2 乙
b 2 甲
c 3 甲
c 3 乙
d 5 甲
d 3 甲
d 5 乙
e 1 乙
查询语句1:SELECT 地点,sum(数量) from data group by 地点
结果为:
地点 Expr1001
a 4
b 2
c 6
d 13
e 1
查询语句2:SELECT 地点,sum(数量) from data where 种类="甲"group by 地点
结果为:
地点 Expr1001
a 2
b 2
c 3
d 8
我想要的是,当查询语句是2的时候,得到如下结果:
地点 Expr1001
a 2
b 2
c 3
d 8
e 0
就是说:当用语句2的时候,地点字段的值要全部列出来,
这个Group BY 可能完在不了这个功能,
最好再和所有的地点字段Join一下,
SELECT * from ((SELECT DISTINCT 地点 from data) AS a LEFT JOIN (SELECT 地点,sum(数量) from data where 种类="甲"group by 地点) as b ON a.地点=b.地点)
用 having 来筛选
看错了,你还要显示为0,那么就用case来处理第二列
SELECT 地点,iif(sum(数量),0,0,sum(数量)) from data where 种类="甲"group by 地点
IIf(expr, truepart, falsepart)
IIf 函数的语法包含以下参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。)
参数 说明
expr 必选。要计算的表达式。
truepart 必选。expr 为 True 时返回的值或表达式。
falsepart 必选。expr 为 False 时返回的值或表达式。
说明
由于 IIf 会计算 tru
相关问答:
我一个项目,有个插入操作,具体是这样的:
我有进货信息表。在出货时选择相应的进货信息,输入数量,选择部门后,点保存按钮,由于网络延时,点一下没有反映,于是用户就又点一下,导致一次插入了两条记录:
例:
......
tab1 字段:billdate,goodsid,incount,inmoney,outcount,outmoney,endprice,endcount,endamt
tab2 字段:goodsid,goodskind(商品类型)
tab3 字段:goodskind(商品类型),kindname
结果:
得到商品类型在一段时间 ......
请教高手:
以下是数据库中的三条记录,英文为字段名称
id planname TaskBeginTime Status
329 2010年03 ......
我觉得mysql和sqlserver有共同的地方:
有个问题是关于表的锁问题:
进程A 进程B
select * from user where id in lock share mode(共享锁)
&nb ......
原SQL语句SQL code:
SELECT t6.FName '操作工',t1.FDate '日期',t5.FName '制单人',t3.FName '设备',t4.FName '班制',
t7.FBillNo '工艺指令单号',t8.FName '岗位',t2. ......