佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1212|回复: 11

有没有办法在SUM的QUERY里做比较? (MSSQL)

[复制链接]
发表于 2-2-2007 05:47 PM | 显示全部楼层 |阅读模式
请问有没有办法在SUM的QUERY里做比较?

意思是:

select sum(qty) FROM TABLE_A WHERE PROD_CODE IN ('001', '002', '003'...)

这里面做IF...ELSE

意思:

* 如果有QTY的...就DISPLAY SUM(QTY)
* 没有的.....就DISPLAY '0'

要怎样做?
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
有没有试过case when
回复

使用道具 举报

 楼主| 发表于 3-2-2007 09:40 PM | 显示全部楼层

回复 #5 tensaix2j 的帖子

请问要怎样写CASE的啊?
回复

使用道具 举报

Follow Us
发表于 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
回复

使用道具 举报


ADVERTISEMENT

发表于 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 ...


感谢您的帮忙, 我已经拿到我要的东西了.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 28-8-2025 06:35 AM , Processed in 0.112859 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表