Sql 子串(ordtim,3,4)) 以dltim2结束, 俄瑞斯特, ordv#ordv#, 兽人, 矿石数量, orspec, orstp#orstp#, 奥科姆, (案例 当mmtotal不为空时,则为mmtotal 其他0 完)总计,, orwgt, 奥洛蒂, 奥罗斯特, 秩序, 奥德斯特, orara asarea, orpdrv oprdrv, 世界#世界#, ordsp#ordsp#, 奥什德, 奥什特, 朝鲜民主主义人民共和国, (案例 当equipmentnumber不为空时,则equipmentnumber 否则“ 完)设备编号, (案例 当apptreq不为NULL时,则apptreq 否则 完)apptreq,, (案例 当ApptMode不为NULL时,则ApptMode 否则 (完)apptmade,, (案例 当ununit不为NULL时,则为ununit 否则“ (完)联合国大学, (案例 当unsupr不为NULL时,则unsupr 否则“ 完)asdrmgr,, (案例 如果unfmgr不为NULL,则为unfmgr 否则“ 完)asflmgr,, (案例 当untr1不为NULL时,则untr1 否则“ (完)1 来自iesqafile.opplan 左外连接iesqafile.order d 关于d.orodr#=opord# 左外接 关于mmord#=d.orodr# 左外连接第一行 关于d.orodr#=Oord# 左外联接停止组 关于d.orodr#=停止命令 左外连接iesqafile.units 关于ununit=d.orpdrv
第一个错误是因为在两个主SELECT语句(联合在一起)中,您有不同的列名-因此视图不知道如何称呼它们,并要求您显式命名它们,例如,每个语句中的第一列:Sql 子串(ordtim,3,4)) 以dltim2结束, 俄瑞斯特, ordv#ordv#, 兽人, 矿石数量, orspec, orstp#orstp#, 奥科姆, (案例 当mmtotal不为空时,则为mmtotal 其他0 完)总计,, orwgt, 奥洛蒂, 奥罗斯特, 秩序, 奥德斯特, orara asarea, orpdrv oprdrv, 世界#世界#, ordsp#ordsp#, 奥什德, 奥什特, 朝鲜民主主义人民共和国, (案例 当equipmentnumber不为空时,则equipmentnumber 否则“ 完)设备编号, (案例 当apptreq不为NULL时,则apptreq 否则 完)apptreq,, (案例 当ApptMode不为NULL时,则ApptMode 否则 (完)apptmade,, (案例 当ununit不为NULL时,则为ununit 否则“ (完)联合国大学, (案例 当unsupr不为NULL时,则unsupr 否则“ 完)asdrmgr,, (案例 如果unfmgr不为NULL,则为unfmgr 否则“ 完)asflmgr,, (案例 当untr1不为NULL时,则untr1 否则“ (完)1 来自iesqafile.opplan 左外连接iesqafile.order d 关于d.orodr#=opord# 左外接 关于mmord#=d.orodr# 左外连接第一行 关于d.orodr#=Oord# 左外联接停止组 关于d.orodr#=停止命令 左外连接iesqafile.units 关于ununit=d.orpdrv,sql,view,db2,ibm-midrange,Sql,View,Db2,Ibm Midrange,第一个错误是因为在两个主SELECT语句(联合在一起)中,您有不同的列名-因此视图不知道如何称呼它们,并要求您显式命名它们,例如,每个语句中的第一列: SELECT a.orodr# orodr_ ... SELECT d.orodr# as ordddd ... 对于第二个错误,ORPTIM列的数据类型是什么 我猜这种类型的构造导致了这个问题: CASE orptim WHEN 0 THEN Varchar(0) ELSE CO
SELECT a.orodr# orodr_ ...
SELECT d.orodr# as ordddd ...
对于第二个错误,ORPTIM列的数据类型是什么
我猜这种类型的构造导致了这个问题:
CASE orptim
WHEN 0
THEN Varchar(0)
ELSE CONCAT(CONCAT(SUBSTRING(orptim, 1, 2), ':'), SUBSTRING(orptim, 3, 4))
如果orptim是一个数字/小数,那么“WHEN 0”将起作用,但“SUBSTRING(orptim,1,2)”将不起作用-因为您不能将数字作为子字符串。如果orptim是一个字符串,那么“WHEN 0”w=可能会引起问题。谢谢,我理解了有关列标题的部分。由于Orptim是一个十进制数,将char typecaset添加到代码中会解决这个问题吗?例如:CASE orptim WHEN 0然后Varchar(0)ELSE CONCAT(CONCAT(SUBSTRING(char(orptim),1,2),“:”),SUBSTRING(char(orptim),3,4))可能会工作,但前提是十进制值始终包含至少4位数字。如果没有,那么您需要格式化这些值,以便您的子字符串返回您需要的值,例如,用零填充值,非常感谢您的帮助!!因此,问题是orptim是一个长度为4的字符,它似乎包含转换为字符的数字数据类型。所以0应该是0000。再次感谢。如果没有你的帮助,我永远不会明白。
create view pavt.v1 (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,v30,v31,v32,v33,v34,v35,v36) as
Message . . . . : Select or omit error on field
Cast(Translate(ORDER_14.ORPTIM, *UNNAMED Table) AS member V.
Cause . . . . . : A select or omit error occurred in record 0, record format
*FIRST, member number 1 of file V in library PAVT, because of condition 1 of
the following conditions:
1 - The data was not valid in a decimal field.
create view pavt.CCC1 as
WITH firstequiprrn
AS (SELECT oeord# equiporder,
Min(RRN(a)) firstrow
FROM iesqafile.OPEQUIP a
GROUP BY oeord#
ORDER BY 1),
firstequiprow
AS (SELECT oeord#,
oetrlr equipmentnumber
FROM firstequiprrn
INNER JOIN iesqafile.OPEQUIP b
ON equiporder = oeord#
AND firstrow = RRN(b)),
ordermiles
AS (SELECT mmord#,
mmtotal
FROM iesqafile.mmiles
WHERE mmord# IN(SELECT orodr#
FROM iesqafile.order)
AND mmrectype = 'O'
AND mmdsp# = '00'),
stopgroup
AS (SELECT soord stoporder,
COUNT(*) stopsremain,
Min(sostp#) nextstop,
Max(soappr) apptreq,
Max(soaptm) apptmade
FROM iesqafile.stopoff
INNER JOIN iesqafile.order
ON orodr# = soord
WHERE soardt = 0
GROUP BY soord
ORDER BY 1) SELECT a.orodr# orodr_,
orcust,
orldat,
CASE orpdat
WHEN 0 THEN Varchar(0)
ELSE Varchar_format(CHAR(orpdat), 'YYYY-MM-DD')
END erdat2,
CASE orptim
WHEN 0 THEN Varchar(0)
ELSE CONCAT(CONCAT(SUBSTRING(char(orptim), 1, 2), ':'),
SUBSTRING(char(orptim), 3, 4))
END AS ertim2,
CASE orapdt
WHEN 0 THEN Varchar(0)
ELSE Varchar_format(CHAR(orapdt), 'YYYY-MM-DD')
END ltdat2,
CASE oraptm
WHEN 0 THEN Varchar(0)
ELSE CONCAT(CONCAT(SUBSTRING(oraptm, 1, 2), ':'),
SUBSTRING(oraptm, 3, 4))
END AS lttim2,
CASE orddat
WHEN 0 THEN Varchar(0)
ELSE Varchar_format(CHAR(orddat), 'YYYY-MM-DD')
END dldat2,
CASE ordtim
WHEN 0 THEN Varchar(0)
ELSE CONCAT(CONCAT(SUBSTRING(ordtim, 1, 2), ':'),
SUBSTRING(ordtim, 3, 4))
END AS dltim2,
orestr,
a.ordv# ordv_,
orcons,
oreqty,
orspec,
a.orstp# orstp_,
orcomc,
( CASE
WHEN mmtotal IS NOT NULL THEN mmtotal
ELSE 0
END ) mmtotal,
orwgt,
orocty,
orost,
ordcty,
ordst,
orara asarea,
orpdrv oprdrv,
orld# orld_,
ordsp# ordsp_,
orshdt,
orshtm,
ornwpk,
( CASE
WHEN equipmentnumber IS NOT NULL THEN equipmentnumber
ELSE ''
END ) EquipmentNumber,
( CASE
WHEN apptreq IS NOT NULL THEN apptreq
ELSE 'N'
END ) apptreq,
( CASE
WHEN apptmade IS NOT NULL THEN apptmade
ELSE 'N'
END ) apptmade,
( CASE
WHEN ununit IS NOT NULL THEN ununit
ELSE ' '
END ) UNUNIT,
( CASE
WHEN unsupr IS NOT NULL THEN unsupr
ELSE ' '
END ) asdrmgr,
( CASE
WHEN unfmgr IS NOT NULL THEN unfmgr
ELSE ' '
END ) asflmgr,
( CASE
WHEN untrl1 IS NOT NULL THEN untrl1
ELSE ' '
END ) UNTRL1
FROM iesqafile.order a
LEFT OUTER JOIN ordermiles
ON mmord# = a.orodr#
LEFT OUTER JOIN firstequiprow
ON a.orodr# = oeord#
LEFT OUTER JOIN stopgroup
ON a.orodr# = stoporder
LEFT OUTER JOIN iesqafile.units
ON ununit = a.orpdrv
WHERE orld# <> ordsp#
AND ( orspec = 'N# C'
OR orspec = 'N# P' )
AND orpdrv <> ''
AND orpdat >= 2018001
UNION
SELECT d.orodr# orodr_,
orcust,
orldat,
CASE orpdat
WHEN 0 THEN Varchar(0)
ELSE Varchar_format(CHAR(orpdat), 'YYYY-MM-DD')
END erdat2,
CASE orptim
WHEN 0 THEN Varchar(0)
ELSE CONCAT(CONCAT(SUBSTRING(char(orptim), 1, 2), ':'),
SUBSTRING(char(orptim), 3, 4))
END AS ertim2,
CASE orapdt
WHEN 0 THEN Varchar(0)
ELSE Varchar_format(CHAR(orapdt), 'YYYY-MM-DD')
END ltdat2,
CASE oraptm
WHEN 0 THEN Varchar(0)
ELSE CONCAT(CONCAT(SUBSTRING(oraptm, 1, 2), ':'),
SUBSTRING(oraptm, 3, 4))
END AS lttim2,
CASE orddat
WHEN 0 THEN Varchar(0)
ELSE Varchar_format(CHAR(orddat), 'YYYY-MM-DD')
END dldat2,
CASE ordtim
WHEN 0 THEN Varchar(0)
ELSE CONCAT(CONCAT(SUBSTRING(ordtim, 1, 2), ':'),
SUBSTRING(ordtim, 3, 4))
END AS dltim2,
orestr,
ordv# ordv_,
orcons,
oreqty,
orspec,
orstp# orstp_,
orcomc,
( CASE
WHEN mmtotal IS NOT NULL THEN mmtotal
ELSE 0
END ) mmtotal,
orwgt,
orocty,
orost,
ordcty,
ordst,
orara asarea,
orpdrv oprdrv,
orld# orld_,
ordsp# ordsp_,
orshdt,
orshtm,
ornwpk,
( CASE
WHEN equipmentnumber IS NOT NULL THEN equipmentnumber
ELSE ' '
END ) EquipmentNumber,
( CASE
WHEN apptreq IS NOT NULL THEN apptreq
ELSE 'N'
END ) apptreq,
( CASE
WHEN apptmade IS NOT NULL THEN apptmade
ELSE 'N'
END ) apptmade,
( CASE
WHEN ununit IS NOT NULL THEN ununit
ELSE ' '
END ) UNUNIT,
( CASE
WHEN unsupr IS NOT NULL THEN unsupr
ELSE ' '
END ) asdrmgr,
( CASE
WHEN unfmgr IS NOT NULL THEN unfmgr
ELSE ' '
END ) asflmgr,
( CASE
WHEN untrl1 IS NOT NULL THEN untrl1
ELSE ' '
END ) UNTRL1
FROM iesqafile.opplan
LEFT OUTER JOIN iesqafile.order d
ON d.orodr# = opord#
LEFT OUTER JOIN ordermiles
ON mmord# = d.orodr#
LEFT OUTER JOIN firstequiprow
ON d.orodr# = oeord#
LEFT OUTER JOIN stopgroup
ON d.orodr# = stoporder
LEFT OUTER JOIN iesqafile.units
ON ununit = d.orpdrv
SELECT a.orodr# orodr_ ...
SELECT d.orodr# as ordddd ...
CASE orptim
WHEN 0
THEN Varchar(0)
ELSE CONCAT(CONCAT(SUBSTRING(orptim, 1, 2), ':'), SUBSTRING(orptim, 3, 4))