楼主: sky721

救人第二命

[复制链接]
论坛徽章:
7
11#
 楼主| 发表于 2004-2-9 21:09 | 只看该作者
忘记说了,先是从每一个行中选两个列其中的一个,然后再用group by 选择item code一样的最低的价格,可不可以这样:
view1: select item_code,purchase_price_n as purchase_price from table where " ? "
view 2:select item_code,purchase_price_p as purchase_price from table where " ? "
然后把这两个view合并在一起
view3:
然后做选最低价的view
view 4:select item_code,min(purchase_price) from view3 group by item_code
不知道?的地方怎么编

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
66
ITPUB元老
日期:2005-07-16 18:49:11授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44现任管理团队成员
日期:2011-05-07 01:45:08版主3段
日期:2012-05-15 15:24:11
12#
发表于 2004-2-9 22:39 | 只看该作者
由于你实在不会问,偶也懒得费心,人道主义授助一下吧。

计算条件列表并返回多个可能结果表达式之一。
记住:then后面可以跟表的字段price1或price2,条件在when中可以
表过,你可以使用第二种格式。

CASE 具有两种格式:

简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。


CASE 搜索函数计算一组布尔表达式以确定结果。
两种格式都支持可选的 ELSE 参数。

语法
简单 CASE 函数:

CASE input_expression
    WHEN when_expression THEN result_expression
        [ ...n ]
    [
        ELSE else_result_expression
    END

CASE 搜索函数:

CASE
    WHEN Boolean_expression THEN result_expression
        [ ...n ]
    [
        ELSE else_result_expression
    END

参数
input_expression

是使用简单 CASE 格式时所计算的表达式。Input_expression 是任何有效的 Microsoft® SQL Server™ 表达式。

WHEN when_expression

使用简单 CASE 格式时 input_expression 所比较的简单表达式。When_expression 是任意有效的 SQL Server 表达式。Input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。

n

占位符,表明可以使用多个 WHEN when_expression THEN result_expression 子句或 WHEN Boolean_expression THEN result_expression 子句。

THEN result_expression

当 input_expression = when_expression 取值为 TRUE,或者 Boolean_expression 取值为 TRUE 时返回的表达式。result expression 是任意有效的 SQL Server 表达式。

ELSE else_result_expression

当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算取值不为 TRUE,CASE 将返回 NULL 值。Else_result_expression 是任意有效的 SQL Server 表达式。Else_result_expression 和所有 result_expression 的数据类型必须相同,或者必须是隐性转换。

WHEN Boolean_expression

使用 CASE 搜索格式时所计算的布尔表达式。Boolean_expression 是任意有效的布尔表达式。

结果类型
从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型。有关更多信息,请参见数据类型的优先顺序。

结果值
简单 CASE 函数:
计算 input_expression,然后按指定顺序对每个 WHEN 子句的 input_expression = when_expression 进行计算。


返回第一个取值为 TRUE 的 (input_expression = when_expression) 的 result_expression。


如果没有取值为 TRUE 的 input_expression = when_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。
CASE 搜索函数:
按指定顺序为每个 WHEN 子句的 Boolean_expression 求值。


返回第一个取值为 TRUE 的 Boolean_expression 的 result_expression。


如果没有取值为 TRUE 的 Boolean_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。
示例
A. 使用带有简单 CASE 函数的 SELECT 语句
在 SELECT 语句中,简单 CASE 函数仅检查是否相等,而不进行其它比较。下面的示例使用 CASE 函数更改图书分类显示,以使其更易于理解。

USE pubs
GO
SELECT   Category =
      CASE type
         WHEN 'popular_comp' THEN 'Popular Computing'
         WHEN 'mod_cook' THEN 'Modern Cooking'
         WHEN 'business' THEN 'Business'
         WHEN 'psychology' THEN 'Psychology'
         WHEN 'trad_cook' THEN 'Traditional Cooking'
         ELSE 'Not yet categorized'
      END,
   CAST(title AS varchar(25)) AS 'Shortened Title',
   price AS Price
FROM titles
WHERE price IS NOT NULL
ORDER BY type, price
COMPUTE AVG(price) BY type
GO

下面是结果集:

Category            Shortened Title           Price                     
------------------- ------------------------- --------------------------
Business            You Can Combat Computer S 2.99                       
Business            Cooking with Computers: S 11.95                     
Business            The Busy Executive's Data 19.99                     
Business            Straight Talk About Compu 19.99                     

                                              avg
                                              ==========================
                                              13.73                     

Category            Shortened Title           Price                     
------------------- ------------------------- --------------------------
Modern Cooking      The Gourmet Microwave     2.99                       
Modern Cooking      Silicon Valley Gastronomi 19.99                     

                                              avg
                                              ==========================
                                              11.49                     

Category            Shortened Title           Price                     
------------------- ------------------------- --------------------------
Popular Computing   Secrets of Silicon Valley 20.00                     
Popular Computing   But Is It User Friendly?  22.95                     

                                              avg
                                              ==========================
                                              21.48                     

Category            Shortened Title           Price                     
------------------- ------------------------- --------------------------
Psychology          Life Without Fear         7.00                       
Psychology          Emotional Security: A New 7.99                       
Psychology          Is Anger the Enemy?       10.95                     
Psychology          Prolonged Data Deprivatio 19.99                     
Psychology          Computer Phobic AND Non-P 21.59                     

                                              avg
                                              ==========================
                                              13.50                     

Category            Shortened Title           Price                     
------------------- ------------------------- --------------------------
Traditional Cooking Fifty Years in Buckingham 11.95                     
Traditional Cooking Sushi, Anyone?            14.99                     
Traditional Cooking Onions, Leeks, and Garlic 20.95                     

                                              avg
                                              ==========================
                                              15.96                     

(21 row(s) affected)

B. 使用带有简单 CASE 函数和 CASE 搜索函数的 SELECT 语句
在 SELECT 语句中,CASE 搜索函数允许根据比较值在结果集内对值进行替换。下面的示例根据图书的价格范围将价格(money 列)显示为文本注释。

USE pubs
GO
SELECT    'Price Category' =
      CASE
         WHEN price IS NULL THEN 'Not yet priced'
         WHEN price < 10 THEN 'Very Reasonable Title'
         WHEN price >= 10 and price < 20 THEN 'Coffee Table Title'
         ELSE 'Expensive book!'
      END,
   CAST(title AS varchar(20)) AS 'Shortened Title'
FROM titles
ORDER BY price
GO

下面是结果集:

Price Category        Shortened Title      
--------------------- --------------------
Not yet priced        Net Etiquette        
Not yet priced        The Psychology of Co
Very Reasonable Title The Gourmet Microwav
Very Reasonable Title You Can Combat Compu
Very Reasonable Title Life Without Fear   
Very Reasonable Title Emotional Security:  
Coffee Table Title    Is Anger the Enemy?  
Coffee Table Title    Cooking with Compute
Coffee Table Title    Fifty Years in Bucki
Coffee Table Title    Sushi, Anyone?      
Coffee Table Title    Prolonged Data Depri
Coffee Table Title    Silicon Valley Gastr
Coffee Table Title    Straight Talk About  
Coffee Table Title    The Busy Executive's
Expensive book!       Secrets of Silicon V
Expensive book!       Onions, Leeks, and G
Expensive book!       Computer Phobic And  
Expensive book!       But Is It User Frien

(18 row(s) affected)

C. 使用带有 SUBSTRING 和 SELECT 的 CASE 函数
下面的示例使用 CASE 和 THEN 生成一个有关作者、图书标识号和每个作者所著图书类型的列表。

USE pubs
SELECT SUBSTRING((RTRIM(a.au_fname) + ' '+
   RTRIM(a.au_lname) + ' '), 1, 25) AS Name, a.au_id, ta.title_id,
   Type =
  CASE
    WHEN SUBSTRING(ta.title_id, 1, 2) = 'BU' THEN 'Business'
    WHEN SUBSTRING(ta.title_id, 1, 2) = 'MC' THEN 'Modern Cooking'
    WHEN SUBSTRING(ta.title_id, 1, 2) = 'PC' THEN 'Popular Computing'
    WHEN SUBSTRING(ta.title_id, 1, 2) = 'PS' THEN 'Psychology'
    WHEN SUBSTRING(ta.title_id, 1, 2) = 'TC' THEN 'Traditional Cooking'
  END
FROM titleauthor ta JOIN authors a ON ta.au_id = a.au_id

下面是结果集:

Name                      au_id       title_id Type               
------------------------- ----------- -------- -------------------
Johnson White             172-32-1176 PS3333   Psychology         
Marjorie Green            213-46-8915 BU1032   Business            
Marjorie Green            213-46-8915 BU2075   Business            
Cheryl Carson             238-95-7766 PC1035   Popular Computing   
Michael O'Leary           267-41-2394 BU1111   Business            
Michael O'Leary           267-41-2394 TC7777   Traditional Cooking
Dean Straight             274-80-9391 BU7832   Business            
Abraham Bennet            409-56-7008 BU1032   Business            
Ann Dull                  427-17-2319 PC8888   Popular Computing   
Burt Gringlesby           472-27-2349 TC7777   Traditional Cooking
Charlene Locksley         486-29-1786 PC9999   Popular Computing   
Charlene Locksley         486-29-1786 PS7777   Psychology         
Reginald Blotchet-Halls   648-92-1872 TC4203   Traditional Cooking
Akiko Yokomoto            672-71-3249 TC7777   Traditional Cooking
Innes del Castillo        712-45-1867 MC2222   Modern Cooking      
Michel DeFrance           722-51-5454 MC3021   Modern Cooking      
Stearns MacFeather        724-80-9391 BU1111   Business            
Stearns MacFeather        724-80-9391 PS1372   Psychology         
Livia Karsen              756-30-7391 PS1372   Psychology         
Sylvia Panteley           807-91-6654 TC3218   Traditional Cooking
Sheryl Hunter             846-92-7186 PC8888   Popular Computing   
Anne Ringer               899-46-2035 MC3021   Modern Cooking      
Anne Ringer               899-46-2035 PS2091   Psychology         
Albert Ringer             998-72-3567 PS2091   Psychology         
Albert Ringer             998-72-3567 PS2106   Psychology

使用道具 举报

回复
论坛徽章:
7
13#
 楼主| 发表于 2004-2-9 23:51 | 只看该作者
太深奥了,没看懂,能再指点一二吗?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
66
ITPUB元老
日期:2005-07-16 18:49:11授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44现任管理团队成员
日期:2011-05-07 01:45:08版主3段
日期:2012-05-15 15:24:11
14#
发表于 2004-2-10 00:01 | 只看该作者
这些示例都是PUBS数据库中的表,在查询分析器中选取
PUBS数据库,然后将A,B,C示例都执行一下,然后分
析CASE语句的使用方法......

使用道具 举报

回复
论坛徽章:
7
15#
 楼主| 发表于 2004-2-10 00:05 | 只看该作者
最初由 xzh2000 发布
[B]这些示例都是PUBS数据库中的表,在查询分析器中选取
PUBS数据库,然后将A,B,C示例都执行一下,然后分
析CASE语句的使用方法...... [/B]

好,谢谢,明天去单位试一下

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
16#
发表于 2004-2-10 08:44 | 只看该作者
case可以,使用if判断也可以

使用道具 举报

回复
论坛徽章:
7
17#
 楼主| 发表于 2004-2-10 10:44 | 只看该作者
问一下case和if都能做在view里面吗

Error Msg:The Query Designer does not support the CASE SQL construct.

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
66
ITPUB元老
日期:2005-07-16 18:49:11授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44现任管理团队成员
日期:2011-05-07 01:45:08版主3段
日期:2012-05-15 15:24:11
18#
发表于 2004-2-10 12:28 | 只看该作者
最初由 sky721 发布
[B]问一下case和if都能做在view里面吗

Error Msg:The Query Designer does not support the CASE SQL construct. [/B]


case與if都不可以在view中出現﹐因為是不確定函數或語句,
但你可以在過程中實現﹐而且過程比視圖更靈活﹐而且性
能也好。

使用道具 举报

回复
论坛徽章:
59
马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41灰彻蛋
日期:2011-10-28 14:15:35管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:15
19#
发表于 2004-2-10 13:44 | 只看该作者
不用CASE或者IF之类的判断函数也可以,
SELECT PRICE1 FROM TAB
WHERE DATE = DATE1
UNION
SELECT PRICE2 FROM TAB
WHERE DATE = DATE2

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
66
ITPUB元老
日期:2005-07-16 18:49:11授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44现任管理团队成员
日期:2011-05-07 01:45:08版主3段
日期:2012-05-15 15:24:11
20#
发表于 2004-2-10 13:50 | 只看该作者
最初由 lodge 发布
[B]不用CASE或者IF之类的判断函数也可以,
SELECT PRICE1 FROM TAB
WHERE DATE = DATE1
UNION
SELECT PRICE2 FROM TAB
WHERE DATE = DATE2 [/B]


如果DATE1或DATE2是不確定的值?
總之視圖是不行的。

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表