Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询以在表列为空时添加默认值_Sql_Database_Oracle - Fatal编程技术网

Sql 查询以在表列为空时添加默认值

Sql 查询以在表列为空时添加默认值,sql,database,oracle,Sql,Database,Oracle,我有一个表,其中boa_user返回三个用户as SELECT DISTINCT u.name, u.updated_by, u.updateddate FROM YTR_USER u, YTR_user_group ug, YTR_group g WHERE u.id = ug.user_id AND ug.group_id = g.id AND u.ACTIVE_FLAG='Y' AND g.id not in (13,11,15) ORDER BY u.name 以下是格式

我有一个表,其中boa_user返回三个用户as

SELECT DISTINCT u.name, u.updated_by, u.updateddate
FROM YTR_USER u, YTR_user_group ug, YTR_group g
WHERE u.id = ug.user_id
  AND ug.group_id = g.id
  AND u.ACTIVE_FLAG='Y'
  AND g.id not in (13,11,15)
ORDER BY u.name
以下是格式

NAME    UPDATED_BY  UPDATEDDATE
AAA     edfef      03.03.03 14:29:34.000
BBB     ferer      12.12.12 15:13:23.756
现在库尔曼是那种类型的

name        VARCHAR2(30)
updateddate TIMESTAMP(6)
现在,查询返回结果,但在这中间有一些列,其中name值为null,updateDate值为null

我的查询是请建议一个查询,如果名称为null,更新日期为null,那么它的defalut值应该类似于“AFGT”,而updateDate默认值应该是“05.03.13 05:29:34”,“MM.DD.YY HH:MI”


如果名称和更新日期为空,请建议查询添加这些默认值。如果我理解正确,当
名称为空,更新日期为空,您要使用:

name = 'AFGT'
updateddate = TO_TIMESTAMP('05.03.13 05:29:34', 'MM.DD.YY HH:MI')
如果这是正确的,您需要的只是一个
案例

但是,这取决于您是否希望
DISTINCT
应用于默认行。如果需要,请使用:

SELECT DISTINCT x.corrected_name, x.corrected_updateddate
FROM (
    SELECT
        CASE WHEN u.name IS NULL AND u.updateddate IS NULL
            THEN 'AFGT'
            ELSE u.name
        END AS corrected_name,
        u.updated_by,
        CASE WHEN u.name IS NULL AND u.updateddate IS NULL
            THEN TO_TIMESTAMP('05.03.13 05:29:34', 'MM.DD.YY HH:MI')
            ELSE u.updateddate
        END AS corrected_updateddate
    FROM YTR_USER u, YTR_user_group ug, YTR_group g
    WHERE u.id = ug.user_id
      AND ug.group_id = g.id
      AND u.ACTIVE_FLAG='Y'
      AND g.id not in (13,11,15)
    ORDER BY u.name
) AS x;
如果要在结果中显示所有默认行,请执行以下操作:

SELECT x.corrected_name, x.corrected_updateddate
FROM (
    SELECT DISTINCT
        CASE WHEN u.name IS NULL AND u.updateddate IS NULL
            THEN 'AFGT'
            ELSE u.name
        END AS corrected_name,
        u.updated_by,
        CASE WHEN u.name IS NULL AND u.updateddate IS NULL
            THEN TO_TIMESTAMP('05.03.13 05:29:34', 'MM.DD.YY HH:MI')
            ELSE u.updateddate
        END AS corrected_updateddate,
        u.name,
        u.updateddate
    FROM YTR_USER u, YTR_user_group ug, YTR_group g
    WHERE u.id = ug.user_id
      AND ug.group_id = g.id
      AND u.ACTIVE_FLAG='Y'
      AND g.id not in (13,11,15)
    ORDER BY u.name
) AS x;
在“选择零件”中使用

诸如此类:

SELECT DISTINCT 
    nvl(u.name, <defaultname>), 
    u.updated_by, 
    nvl(u.updateddate, <deafultdate>)
FROM YTR_USER u, YTR_user_group ug, YTR_group g
WHERE u.id = ug.user_id
  AND ug.group_id = g.id
  AND u.ACTIVE_FLAG='Y'
  AND g.id not in (13,11,15)
ORDER BY u.name
选择DISTINCT
nvl(美国名称,),
u、 更新人:,
nvl(u.UpdateDate,)
来自YTR_用户u、YTR_用户u组ug、YTR_组g
其中u.id=ug.user\u id
和ug.group_id=g.id
和u.ACTIVE_FLAG='Y'
和g.id不在(13,11,15)
按美国名称订购
请注意,我希望您希望在
name为null时使用默认名称值
updatedate为null时使用默认updatedate值
。你的问题在这里有点不清楚


因此,当name为null且updateDate不为null时,上述语句也将返回默认名称。无论其他字段是否为空,只要相应字段为空,它就会返回默认值。

ORA-01791:不是选定的表达式。.获取此信息ERROR@GovindMathur对不起,我的错。我不知道是否要重复默认的每一行,因此我添加了两个变量非常感谢您的帮助,但在执行时,这次出现了此错误..ORA-00933:SQL命令不正确ended@GovindMathur因为你得到的错误和Fabian Barney的答案一样,您能粘贴到这里吗?在
sqlplus
中它是什么样子的(查询和错误)?执行时获取此错误。。ORA-00933:SQL命令不正确,所以请让我知道我在单引号中输入的默认名称,如“AAA”,以及类似的日期