求一SQL的写法,(无符合条件也显示一条记录)
SELECT dbo.inventory_detail.StorerKey, dbo.inventory_detail.Sku, nullif(SUM(QTY)
,0) AS onhold
FROM dbo.inventory_detail
WHERE dbo.inventory_detail.onHoldFlag = 1
GROUP BY dbo.inventory_detail.StorerKey, dbo.inventory_detail.Sku
table dbo.inventory_detail:
StorerKey: key11111
Sku:sku2222
onHoldFlag:0
QTY:33
请问如何写SQL查上表可以当onHoldFlag = 1时显示出,key11111,sku2222,0
(onHoldFlag = 0 时自然显示为key11111,sku2222,33)
谢谢!
问题点数:100、回复次数:11Top
1 楼xdhou(办公室坐久了,想晒晒太阳)回复于 2005-01-04 16:56:42 得分 0
备注:表里肯定有记录,同一StorerKey和Sku下onHoldFlag可能全是0,也可能全是1,也可能又有0又有1,我要统计为0和为1时的总量,没有1时1的量就为0(没有0时0的量为0),都有时各自SUMTop
2 楼quanyi(长生天)回复于 2005-01-04 16:57:17 得分 10
SELECT dbo.inventory_detail.StorerKey, dbo.inventory_detail.Sku, isnull(SUM(QTY),0) AS onhold
FROM dbo.inventory_detail
WHERE dbo.inventory_detail.onHoldFlag = 1
GROUP BY dbo.inventory_detail.StorerKey, dbo.inventory_detail.Sku
table dbo.inventory_detailTop
3 楼WangZWang(先来)回复于 2005-01-04 16:58:35 得分 10
SELECT StorerKey, Sku, --nullif(SUM(QTY),0) AS onhold,
QTY=(Case when onHoldFlag=0 then 33 else 0 end)
FROM dbo.inventory_detailTop
4 楼xdhou(办公室坐久了,想晒晒太阳)回复于 2005-01-04 17:02:44 得分 0
to WangZWang(阿来)
33我只是举个例子,表里QTY的值多了。
to quanyi(长生天)
你的方法也不行,查出来一样是没记录。NULLTop
5 楼quanyi(长生天)回复于 2005-01-04 17:02:52 得分 0
SELECT isnull(dbo.inventory_detail.StorerKey,'key11111') as 'StorerKey',isnull( dbo.inventory_detail.Sku,'sku2222') as 'Sku',
isnull(SUM(QTY) ,0) AS onhold
FROM dbo.inventory_detail
WHERE dbo.inventory_detail.onHoldFlag = 1
GROUP BY dbo.inventory_detail.StorerKey, dbo.inventory_detail.SkuTop
6 楼xdhou(办公室坐久了,想晒晒太阳)回复于 2005-01-04 17:09:59 得分 0
to quanyi(长生天)
你的结果仍然显示不出来,无记录,
再次说明:以上表中的那条记录是我模拟的,只是举个例子。Top
7 楼xdhou(办公室坐久了,想晒晒太阳)回复于 2005-01-04 17:11:48 得分 0
我的想法是不是不现实啊,不知能不能实现。Top
8 楼WangZWang(先来)回复于 2005-01-04 17:15:14 得分 10
SELECT StorerKey, Sku,
onhold=sum(Case when onHoldFlag=0 then QTY else 0 end)
FROM dbo.inventory_detail
group by StorerKey, SkuTop
9 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2005-01-04 17:15:22 得分 60
SELECT
a.StorerKey,
a.Sku,
SUM(Case when a.onHoldFlag = 1 then a.QTY else 0 end) as onhold,
SUM(Case when a.onHoldFlag = 0 then a.QTY else 0 end) as notonhold
FROM
dbo.inventory_detail a
group by
a.StorerKey,
a.Sku
Top
10 楼WangZWang(先来)回复于 2005-01-04 17:18:18 得分 10
SELECT StorerKey, Sku, notonhold=0,
onhold=sum(Case when onHoldFlag=0 then QTY else 0 end),
FROM dbo.inventory_detail
group by StorerKey, Sku
Top
11 楼xdhou(办公室坐久了,想晒晒太阳)回复于 2005-01-04 17:21:27 得分 0
向libin_ftsafe(子陌红尘) 学习,谢谢!!Top




