如何在DB2中做更多的事情 [英] How to do more things in DB2

查看:56
本文介绍了如何在DB2中做更多的事情的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Ian继续尝试学习DB2-SQL的传奇


18. CASE语句


这些甚至是可能的:


SELECT

CASE

WHEN v.id = 1 THEN''Hello'';

WHEN v .id = 2 THEN'','';

WHEN v.id = 3那么''世界';

ELSE''!''

结束案例如foo

FROM(价值观1,2,3,4)AS v(id)


期望的输出

foo

========

你好



world




另一个例子:

SELECT

CustomerID,

SUM (

CASE

WHEN OrderValue> 1000 THEN OrderAmount;

ELSE 0

END CASE)AS TotalOfBigOrders

来自订单


另一个例子:


SELECT

i.InfractionID,

CASE

当i.EmployeeID不为空时(Employees.EmployeeName);

当i.PatronID不是NU时LL THEN(Patrons.PatronName);

ELSE''未知参与者'';

结束案例作为PersonDoingTheInfaction

FROM Infactions i

LEFT JOIN Patrons

ON i.PatronID = Patrons.PatronID

LEFT JOIN员工

ON i.EmployeeID =员工。 EmployeeID


或上述其他所需技巧:


SELECT

i.InfactionID,

CASE

当i.EmployeeID不为空时(

SELECT员工名称

来自员工

WHERE Employees.EmployeeID = i.EmployeeID);

当i.PatronID不为空时(

SELECT Patronname

来自顾客
WHERE Patrons.PatronsID = i.PatronID);

ELSE''未知参与者'';

结束案例作为PersonDoingTheInfraction

FROM Infractions i

The continuing saga of Ian trying to learn DB2-SQL

18. CASE Statements

Are these even possible:

SELECT
CASE
WHEN v.id=1 THEN ''Hello'';
WHEN v.id=2 THEN '', '';
WHEN v.id=3 THEN ''world'';
ELSE ''!''
END CASE AS foo
FROM (VALUES 1, 2, 3, 4) AS v(id)

Desired output
foo
========
Hello
,
world
!

Another example:
SELECT
CustomerID,
SUM(
CASE
WHEN OrderValue > 1000 THEN OrderAmount;
ELSE 0
END CASE) AS TotalOfBigOrders
FROM Orders

Another example:

SELECT
i.InfractionID,
CASE
WHEN i.EmployeeID IS NOT NULL THEN (Employees.EmployeeName);
WHEN i.PatronID IS NOT NULL THEN (Patrons.PatronName);
ELSE ''Unknown Participant'';
END CASE AS PersonDoingTheInfaction
FROM Infactions i
LEFT JOIN Patrons
ON i.PatronID = Patrons.PatronID
LEFT JOIN Employees
ON i.EmployeeID = Employees.EmployeeID

or another desired technique of the above:

SELECT
i.InfactionID,
CASE
WHEN i.EmployeeID IS NOT NULL THEN (
SELECT EmployeeName
FROM Employees
WHERE Employees.EmployeeID = i.EmployeeID);
WHEN i.PatronID IS NOT NULL THEN (
SELECT Patronname
FROM Patrons
WHERE Patrons.PatronsID = i.PatronID);
ELSE ''Unknown participant'';
END CASE AS PersonDoingTheInfraction
FROM Infractions i

推荐答案

文章< dv ********* @ enews4.newsguy.com> , ia *********** @ avatopia.com

说。 ..
In article <dv*********@enews4.newsguy.com>, ia***********@avatopia.com
says...
Ian继续尝试学习DB2-SQL的传奇
The continuing saga of Ian trying to learn DB2-SQL



你可以从Greame Birchall那里学到很多SQL Cookbook,

google for DB2 SQL Cookbook并检查第一个链接。



You can learn a lot reading the SQL Cookbook from Greame Birchall,
google for DB2 SQL Cookbook and check the first link.


Ian Boyd写道:
Ian Boyd wrote:
继续传奇Ian试图学习DB2-SQL

18.案例陈述

这些甚至是可能的:

SELECT
CASE
当v.id = 1那么''你好''

WHEN v.id = 2那么'','

WHEN v.id = 3那么'世界''ELSE''!''
END as foo FROM(VALUES 1,2,3,4)AS v(id)

期望的输出
foo
========
你好

世界


另一个例子:
SELECT
CustomerID,
SUM(
CASE
WHEN OrderValue> 1000那么OrderAmount ELSE 0
END)AS TotalOfBigOrders FROM Orders

另一个例子:

选择
i.InfractionID,
CASE
当i.EmployeeID不为空时(Employees.EmployeeName)

当i.PatronID不为空时(Patrons.PatronName)ELSE''未知参与者''
结束为PersonDoingTheInfaction来自Infactions i
LEFT JOIN Patrons
ON i.PatronID = Patrons.PatronID
LEFT JOIN员工
ON i.EmployeeID = Employees.EmployeeID

或上述另一种理想的技术:

i.InfactionID,
CASE
当i.EmployeeID不为空时(
SELECT EmployeeName
FROM Employees
WHERE Employees.EmployeeID = i.EmployeeID)当i.PatronID不为空时(
选择Patronname
来自顾客
WHERE Pat rons.PatronsID = i.PatronID)

ELSE''未知参与者''

END作为PersonDoingInInfraction FROM Infractions i
The continuing saga of Ian trying to learn DB2-SQL

18. CASE Statements

Are these even possible:

SELECT
CASE WHEN v.id=1 THEN ''Hello''
WHEN v.id=2 THEN '', ''
WHEN v.id=3 THEN ''world'' ELSE ''!'' END AS foo FROM (VALUES 1, 2, 3, 4) AS v(id)

Desired output
foo
========
Hello
,
world
!

Another example:
SELECT
CustomerID,
SUM(
CASE WHEN OrderValue > 1000 THEN OrderAmount ELSE 0 END ) AS TotalOfBigOrders FROM Orders

Another example:

SELECT
i.InfractionID,
CASE WHEN i.EmployeeID IS NOT NULL THEN (Employees.EmployeeName)
WHEN i.PatronID IS NOT NULL THEN (Patrons.PatronName) ELSE ''Unknown Participant'' END AS PersonDoingTheInfaction FROM Infactions i
LEFT JOIN Patrons
ON i.PatronID = Patrons.PatronID
LEFT JOIN Employees
ON i.EmployeeID = Employees.EmployeeID

or another desired technique of the above:

SELECT
i.InfactionID,
CASE
WHEN i.EmployeeID IS NOT NULL THEN (
SELECT EmployeeName
FROM Employees WHERE Employees.EmployeeID = i.EmployeeID) WHEN i.PatronID IS NOT NULL THEN (
SELECT Patronname
FROM Patrons WHERE Patrons.PatronsID = i.PatronID)
ELSE ''Unknown participant''
END AS PersonDoingTheInfraction FROM Infractions i



Works完全相同的Oracle 9i和* squinthard * SQL Server 2000


干杯

Serge


- < br $>
Serge Rielau

DB2解决方案开发

IBM多伦多实验室


Works exactly the same in Oracle 9i and *squinthard* SQL Server 2000

Cheers
Serge

--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab


Ian Boyd写道:
Ian Boyd wrote:
Ian试图学习DB2-SQL的持续传奇


这可以解释一下。 :P


18. CASE声明

这些甚至是可能的:

SELECT
CASE
WHEN v.id = 1那么''你好'';
当v.id = 2那么'','';
当v.id = 3那么''世界';
ELSE''!''
END CASE as foo
FROM(VALUES 1,2,3,4)AS v(id)

期望的输出
foo
========
你好

世界
The continuing saga of Ian trying to learn DB2-SQL
That would explain quite a bit. :P

18. CASE Statements

Are these even possible:

SELECT
CASE
WHEN v.id=1 THEN ''Hello'';
WHEN v.id=2 THEN '', '';
WHEN v.id=3 THEN ''world'';
ELSE ''!''
END CASE AS foo
FROM (VALUES 1, 2, 3, 4) AS v(id)

Desired output
foo
========
Hello
,
world
!



每次结束后放下分号条款和CASE一词来自END

CASE


SELECT

CASE

WHEN v.id = 1然后''你好''

WHEN v.id = 2那么'','

WHEN v.id = 3那么''世界''

ELSE''!''

END as foo

FROM(VALUES 1,2,3,4)AS v(id)


另外,在这种特殊情况下你可以缩短它:


SELECT

CASE v.id

WHEN 1那么''你好''

当2'时'','

当3'那么''世界'

ELSE''!''

END as foo

FROM(VALUES 1,2,3,4)AS v(id)

B 。


Drop the semi-colon after each clause, and the word "CASE" from "END
CASE"

SELECT
CASE
WHEN v.id=1 THEN ''Hello''
WHEN v.id=2 THEN '', ''
WHEN v.id=3 THEN ''world''
ELSE ''!''
END AS foo
FROM (VALUES 1, 2, 3, 4) AS v(id)

Also, is this particular case you can shorten it to:

SELECT
CASE v.id
WHEN 1 THEN ''Hello''
WHEN 2 THEN '', ''
WHEN 3 THEN ''world''
ELSE ''!''
END AS foo
FROM (VALUES 1, 2, 3, 4) AS v(id)
B.


这篇关于如何在DB2中做更多的事情的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆