查看: 1210|回复: 11
|
有没有办法在SUM的QUERY里做比较? (MSSQL)
[复制链接]
|
|
请问有没有办法在SUM的QUERY里做比较?
意思是:
select sum(qty) FROM TABLE_A WHERE PROD_CODE IN ('001', '002', '003'...)
这里面做IF...ELSE
意思:
* 如果有QTY的...就DISPLAY SUM(QTY)
* 没有的.....就DISPLAY '0'
要怎样做? |
|
|
|
|
|
|
|
发表于 2-2-2007 06:03 PM
|
显示全部楼层
select sum(isnull(qty,0)) FROM TABLE_A WHERE PROD_CODE IN ('001', '002', '003'...) |
|
|
|
|
|
|
|

楼主 |
发表于 3-2-2007 02:26 PM
|
显示全部楼层
原帖由 神仙祖宗 于 2-2-2007 06:03 PM 发表
select sum(isnull(qty,0)) FROM TABLE_A WHERE PROD_CODE IN ('001', '002', '003'...)
结果只出现:
prod_code qty
001 2
而已....
其他的PROD_CODE没有QTY的, 不会DISPLAY'0'啊......怎办? |
|
|
|
|
|
|
|

楼主 |
发表于 3-2-2007 02:59 PM
|
显示全部楼层
忘了说, 那TABLE_A里的资料不是完整的, 而是如果SELECT里的有的, 它就能DISPLAY. 可是我要的是如果SELECT里是那TABLE里没有的, 才DISPLAY'0'的话, 要怎做? |
|
|
|
|
|
|
|
发表于 3-2-2007 06:37 PM
|
显示全部楼层
|
|
|
|
|
|
|

楼主 |
发表于 3-2-2007 09:40 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 4-2-2007 11:21 AM
|
显示全部楼层
原帖由 panic_tee 于 3-2-2007 02:59 PM 发表
忘了说, 那TABLE_A里的资料不是完整的, 而是如果SELECT里的有的, 它就能DISPLAY. 可是我要的是如果SELECT里是那TABLE里没有的, 才DISPLAY'0'的话, 要怎做?
有没有其他table作link?比如product table之类的?
有的话就试试:
select product_table.prod_code, sum(isnull(table_a.qty,0))
FROM product_table left outer join TABLE_A in (table_a.prod_code = product_table.prod_code)
WHERE product_table.PROD_CODE IN ('001', '002', '003'...)
group by product_table.prod_code |
|
|
|
|
|
|
|

楼主 |
发表于 4-2-2007 12:07 PM
|
显示全部楼层
原帖由 神仙祖宗 于 4-2-2007 11:21 AM 发表
有没有其他table作link?比如product table之类的?
有的话就试试:
select product_table.prod_code, sum(isnull(table_a.qty,0))
FROM product_table left outer join TABLE_A in (table_a.prod_c ...
试到了, 非常的感谢啊!!!
再请教一个问题:
如果我要把ORDER BY我PROD_CODE in ('001','002',....)的顺序, 有这可能吗?
意思是我写在('001','002','005','004'...), 它能照着那个次序来排列结果给我?:
001 10
002 1
005 0
004 100 |
|
|
|
|
|
|
|
发表于 27-2-2007 11:59 AM
|
显示全部楼层
试试吧。。
select prod.prod_code, sum(isnull(prod.totalqty,0)), prod.piority
from
(
select product_table.prod_code, sum(isnull(table_a.qty,0)) as totalqty,
case when product_table.PROD_CODE = '001' then 1
when product_table.PROD_CODE = '002' then 2
when product_table.PROD_CODE = '005' then 3
when product_table.PROD_CODE = '004' then 4
end as piority
FROM product_table left outer join TABLE_A in (table_a.prod_code = product_table.prod_code)
WHERE product_table.PROD_CODE IN ('001', '002', '004', '005')
) as prod
group by prod.prod_code,prod.piority
order by prod.piority
如不行就参考这吧:
select A.stksectcode, sum(A.stklotsize), A.piority from
(
select stksectcode, stklotsize,
case when stksectcode = '402' then 1
when stksectcode = '401' then 2
when stksectcode = '405' then 3
when stksectcode = '460' then 4
when stksectcode = '101' then 5
end as piority
from mststk
where stksectcode in ('402', '401', '405', '460', '101')
) as A
group by stksectcode, piority
order by A.piority
order by clause 在这好像放不放都没关系。。
tensaix2j...好久不见。。
[ 本帖最后由 deity01 于 1-3-2007 09:11 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 27-2-2007 12:24 PM
|
显示全部楼层
回复 #9 deity01 的帖子
!@$@$%#&*^%(**+_)+_|++_)(*&^%$#@!QWERYUIKKKJHGDSAZCBNMK!!@#%^&*() |
|
|
|
|
|
|
|
发表于 1-3-2007 09:12 AM
|
显示全部楼层
回复 #10 智仁勇严信 的帖子
u hv problem with my post? |
|
|
|
|
|
|
|

楼主 |
发表于 11-3-2007 04:12 PM
|
显示全部楼层
原帖由 deity01 于 27-2-2007 11:59 AM 发表
试试吧。。
select prod.prod_code, sum(isnull(prod.totalqty,0)), prod.piority
from
(
select product_table.prod_code, sum(isnull(table_a.qty,0)) as totalqty,
case when product_table ...
感谢您的帮忙, 我已经拿到我要的东西了. |
|
|
|
|
|
|
| |
本周最热论坛帖子
|