Sql 仅当先执行某个值时,通过查看一列中的起始值返回数据
我希望有人能帮我解决这个问题 我有以下代码:Sql 仅当先执行某个值时,通过查看一列中的起始值返回数据,sql,db2,Sql,Db2,我希望有人能帮我解决这个问题 我有以下代码: WITH CTE AS ( SELECT SITEID, NIINs, TRX_DT FROM (SELECT A.SITEID, max(B.TRX_DT) as TRX_DT,A.NIINs FROM KCA0001.TRANS A LEFT OUTER JOIN DDCNENVR.ATR B ON B.SITE_ID = A.SITEID AND B.NIIN = A.NIINs AND(B.TRX_DT BETWEEN '2018225' A
WITH CTE AS ( SELECT SITEID, NIINs, TRX_DT
FROM
(SELECT A.SITEID, max(B.TRX_DT) as TRX_DT,A.NIINs
FROM KCA0001.TRANS A LEFT OUTER JOIN DDCNENVR.ATR B ON B.SITE_ID = A.SITEID AND
B.NIIN = A.NIINs AND(B.TRX_DT BETWEEN '2018225' AND '2018273') AND B.DOC_ID IN ('D8A','D9A')
WHERE A.SITEID = 'HECN'
Group by A.SITEID, A.NIINs, B.MED_STA_CD
UNION
SELECT A.SITEID, max(B.TRX_DT) as TRX_DT, A.NIINs
FROM KCA0001.TRANS A LEFT OUTER JOIN DDDEENVR.ATR B ON B.SITE_ID = A.SITEID AND
B.NIIN = A.NIINs AND(B.TRX_DT BETWEEN '2018225' AND '2018273') AND B.DOC_ID IN ('D8A','D9A')
WHERE A.SITEID = 'EGDE'
Group by A.SITEID, A.NIINs, B.MED_STA_CD
UNION
SELECT A.SITEID, max(B.TRX_DT) as TRX_DT, A.NIINs
FROM KCA0001.TRANS A LEFT OUTER JOIN DDWGENVR.ATR B ON B.SITE_ID = A.SITEID AND
B.NIIN = A.NIINs AND(B.TRX_DT BETWEEN '2018225' AND '2018273') AND B.DOC_ID IN ('D8A','D9A')
WHERE A.SITEID = 'HEWG'
Group by A.SITEID, A.NIINs, B.MED_STA_CD))
SELECT A.SITEID AS SITE_ID, B.TRX_DT, B.SEQ_TIME, B.DOC_ID, B.RIC, B.MED_STA_CD, B.FSC, A.NIINS AS NIIN, B.UI, B.ADJ_QTY, B.DOCNO, B.MULT_USE_45_53, B.DISTR_CD, B.PROJ_CD, B.MULT_USE_60_66, B.DEPOT_RIC, B.O_P_CD, B.COND_CD, B.MGT_CD, B.JULN_DAY, B.MULT_USE_76_80, B.OPN_BAL_SEG, B.MAND_RSCH_CD, B.CAUSE_DOC_ID, B.RCN,B.OPNS_CTL_NO, B.CIIC, B.UPRICE, B.MGR_RIC, B.PRGM_ID, A.TRX_DT AS START_DT
FROM CTE A
LEFT OUTER JOIN DDDEENVR.ATR B ON A.NIINs = b.NIIN AND A.SITEID = B.SITE_ID AND B.TRX_DT >= A.TRX_DT
WHERE CTE.SITEID = 'EGDE'
我的雇主要求我创建一个查询,根据几个条件提取数据。上面的代码使用CTE创建一个表,其中包含D8A或D9A(DOC_ID列)的最新日期
表KCA0001.Trans(表1)与表DDCNENVR.ATR(表2)在站点ID(第1列)、NIIN(第2列)和文档ID(第3列)在(D8A、D9A)中合并。
这将在TRX_DT列中给我一个值,比如2018100
我想做的是使用与站点ID(第1列)和NIIN(第2列)关联的2018100值,并将其用作开始日期,但前提是首先完成了文档ID下的D8A或D9A
因此,假设有一行:
SITE_ID NIIN DOC_ID TRX_DT START_DT
NY 1111 D8A 2018100 2018100
NY 1111 DJZ 2018101 2018100
PA 1112 D9A 2018100 2018100
PA 1112 DJZ 2018101 2018100
VA 1113 BCA 2018101 2018100
VA 1113 DJZ 2018102 2018100
NY和PA良好,但VA不应返回,因为没有先完成D8A或D9A
我对SQL还是很陌生,所以我知道所提供的代码是否是最好的。请让我知道,如果我能更好地澄清 愚蠢的我,代码实际上是在做我想让它做的事情,我所需要的只是:
ORDER BY 1 ASC, 8 ASC, 2 ASC, 3 ASC, 4 ASC, 31 ASC
最后,它整理了我的数据 请给出两个表中数据的示例和预期结果的示例