sql server—添加字段或带有公式的字段的sql命令

u59ebvdq  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(418)

我试图添加一个字段调用maxdate(表中dos列的最新dos日期),我在代码中有这个字段调用,这样它就可以显示在输出中,但它不起作用。我的sql查询如下。
编码

Select distinct t.RECORD_ID, t.SEQ_NO, t.CLAIM, t.HIC_NO as HICN_MBI ,t.ID, DOS, t.ERROR_1
 from Sandbox.dbo.XYZ t
 inner join (
  select CLAIM, max(DOS) as MaxDate
  from Sandbox.dbo.XYZ
  Group by CLAIM 
) tm on t.CLAIM = tm.CLAIM and t.DOS = tm.MaxDate
 where RECORD_ID='inf' OR RECORD_ID='REJ'
 and ERROR_1 in ('004',
                    '001',
                    '002',
                    '003')

输出返回列将显示这些列,但maxdate不会出现在输出中

RECORD_ID  SEQ_NO  CLAIM  HICN_MBI ID DOS ERROR_1

我做错什么了?

vshtjzan

vshtjzan1#

您正在使用的代码的原因是没有选择 maxdate 是因为在select语句中您没有选择 maxdate 它在表别名中 tm . 我补充说 tm.maxDate 在选择和这应该工作。

SELECT DISTINCT t.RECORD_ID
    ,t.SEQ_NO
    ,t.CLAIM
    ,t.HIC_NO AS HICN_MBI
    ,t.ID
    ,DOS
    ,t.ERROR_1
    ,tm.MaxDate
FROM Sandbox.dbo.XYZ t
INNER JOIN (
    SELECT CLAIM
        ,max(DOS) AS MaxDate
    FROM Sandbox.dbo.XYZ
    GROUP BY CLAIM
    ) tm ON t.CLAIM = tm.CLAIM
    AND t.DOS = tm.MaxDate
WHERE RECORD_ID = 'inf'
    OR RECORD_ID = 'REJ'
    AND ERROR_1 IN (
        '004'
        ,'001'
        ,'002'
        ,'003'
        )

相关问题