sql中的case when 语句详解
2007-05-13 10:18
537 查看
SELECT A.OrderSID as InvId,
E.BizInvType as TypeCode,
E.TypeName as TypeName,
B.SimpleName as CorpName,
C.StorName as StorName,
CASE
WHEN F_BS001QRYIONOTICE.UnitLevel_ = '1' THEN
-A.TotalDefQty / 250
WHEN F_BS001QRYIONOTICE.UnitLevel_ = '2' THEN
-A.TotalDefQty / 0
WHEN F_BS001QRYIONOTICE.UnitLevel_ = '3' THEN
-A.TotalDefQty
WHEN F_BS001QRYIONOTICE.UnitLevel_ = '4' THEN
-A.TotalDefQty * 10
WHEN F_BS001QRYIONOTICE.UnitLevel_ = '5' THEN
-A.TotalDefQty * 200
ELSE
-A.TotalDefQty
END as TotalDefQty,
A.DetailCount,
D.PersonName,
A.InputTime,
A.Remark,
F.Enterprise as Sourcename
FROM B_OD_OrderMaster A
INNER JOIN G_OG_CorpInfo B ON A.CorpSID = B.CorpSID
INNER JOIN B_ST_BSRealStorAttr C ON A.RealStorSID = C.StorSID
INNER JOIN G_OG_PersonInfo D ON D.PersonSID = A.InputOperSID
INNER JOIN G_PB_BizInvType E ON E.BizInvType = '02'
LEFT JOIN G_CS_CUSTOMER F ON A.CUSTOMERSID = F.CUSTOMERSID
WHERE A.IsActive = '1'
AND A.IsReturn = '1'
AND A.IsStorAudit = '0'
AND A.IsBizAudit = '0'
AND SUBSTR(A.InputTime, 1, 8) >= F_BS001QRYIONOTICE.BeginDate_
AND SUBSTR(A.InputTime, 1, 8) <= F_BS001QRYIONOTICE.EndDate_
AND A.CorpSID = (CASE WHEN F_BS001QRYIONOTICE.CorpSID_ = '' OR
F_BS001QRYIONOTICE.CorpSID_ IS NULL THEN A.CorpSID ELSE
F_BS001QRYIONOTICE.CorpSID_ END)
AND A.RealStorSID = (CASE WHEN F_BS001QRYIONOTICE.StorSID_ = '' OR
F_BS001QRYIONOTICE.StorSID_ IS NULL THEN
A.RealStorSID ELSE F_BS001QRYIONOTICE.StorSID_ END)
AND E.IsInStor =
(CASE WHEN F_BS001QRYIONOTICE.State_ = '1' THEN '1' ELSE E.IsInStor END)
AND E.IsOutStor =
(CASE WHEN F_BS001QRYIONOTICE.State_ = '2' THEN '1' ELSE E.IsOutStor END)
E.BizInvType as TypeCode,
E.TypeName as TypeName,
B.SimpleName as CorpName,
C.StorName as StorName,
CASE
WHEN F_BS001QRYIONOTICE.UnitLevel_ = '1' THEN
-A.TotalDefQty / 250
WHEN F_BS001QRYIONOTICE.UnitLevel_ = '2' THEN
-A.TotalDefQty / 0
WHEN F_BS001QRYIONOTICE.UnitLevel_ = '3' THEN
-A.TotalDefQty
WHEN F_BS001QRYIONOTICE.UnitLevel_ = '4' THEN
-A.TotalDefQty * 10
WHEN F_BS001QRYIONOTICE.UnitLevel_ = '5' THEN
-A.TotalDefQty * 200
ELSE
-A.TotalDefQty
END as TotalDefQty,
A.DetailCount,
D.PersonName,
A.InputTime,
A.Remark,
F.Enterprise as Sourcename
FROM B_OD_OrderMaster A
INNER JOIN G_OG_CorpInfo B ON A.CorpSID = B.CorpSID
INNER JOIN B_ST_BSRealStorAttr C ON A.RealStorSID = C.StorSID
INNER JOIN G_OG_PersonInfo D ON D.PersonSID = A.InputOperSID
INNER JOIN G_PB_BizInvType E ON E.BizInvType = '02'
LEFT JOIN G_CS_CUSTOMER F ON A.CUSTOMERSID = F.CUSTOMERSID
WHERE A.IsActive = '1'
AND A.IsReturn = '1'
AND A.IsStorAudit = '0'
AND A.IsBizAudit = '0'
AND SUBSTR(A.InputTime, 1, 8) >= F_BS001QRYIONOTICE.BeginDate_
AND SUBSTR(A.InputTime, 1, 8) <= F_BS001QRYIONOTICE.EndDate_
AND A.CorpSID = (CASE WHEN F_BS001QRYIONOTICE.CorpSID_ = '' OR
F_BS001QRYIONOTICE.CorpSID_ IS NULL THEN A.CorpSID ELSE
F_BS001QRYIONOTICE.CorpSID_ END)
AND A.RealStorSID = (CASE WHEN F_BS001QRYIONOTICE.StorSID_ = '' OR
F_BS001QRYIONOTICE.StorSID_ IS NULL THEN
A.RealStorSID ELSE F_BS001QRYIONOTICE.StorSID_ END)
AND E.IsInStor =
(CASE WHEN F_BS001QRYIONOTICE.State_ = '1' THEN '1' ELSE E.IsInStor END)
AND E.IsOutStor =
(CASE WHEN F_BS001QRYIONOTICE.State_ = '2' THEN '1' ELSE E.IsOutStor END)
相关文章推荐
- 如何用ORM支持SQL语句的CASE WHEN?
- SQL语句之CASE WHEN
- Sql语句中使用Case When Then判断
- 实际——如何给SQL查询添加合计行(sqlserver2008。但是db2的case when 语句end后不能添加其他字段)
- SQL利用Case When Then多条件判断SQL 语句
- 在sql语句中使用case..when
- sql语句中case when的用法
- SQL语句中case when 的使用方法
- sql/case when 详解
- SQL中的条件判断语句(case when zhen)用法
- SQL语句case when结构用法
- 如何替换掉日期类型值为空时的默认日期? SQL语句Replace的应用和Case when 的用法。
- sql update set使用case when语句
- case when then else SQL语句
- case when then else SQL语句
- SQL语句中的case when语法以及Oracle中的类似方法
- 关于case when复杂sql语句查询
- SQL语句中的case when在access中的使用
- Sql语句:IF ELSE CASE WHEN WHILE CONTINUE BREAK
- SQL的case when then else end语句的用法