首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过查看一列中的起始值返回数据,并且仅当首先执行某个值时

通过查看一列中的起始值返回数据,并且仅当首先执行某个值时
EN

Stack Overflow用户
提问于 2018-08-17 07:11:52
回答 1查看 26关注 0票数 0

我希望有人能帮助我解决这个问题。

我有以下代码:

代码语言:javascript
复制
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)在SITE_ID(列1)、NIIN (列2)和DOC (列3) IN (D8A,D9A)上连接。这将在TRX_DT列中给出一个值,如2018100

我想要做的是使用与Site_ID(第1列)和NIIN(第2列)相关联的2018100值,并将其用作开始日期,但前提是首先完成DOC_ID下的D8A或D9A。

因此,假设有一行:

代码语言:javascript
复制
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很好,但是由于没有先做D8A或D9A,所以不应该返回VA。

我仍然是SQL的新手,所以如果提供的代码不是最好的,我也能理解。如果我能更好地澄清,请告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-17 10:06:25

我太傻了,代码实际上是在做我想让它做的事情,我所需要的就是:

代码语言:javascript
复制
ORDER BY 1 ASC, 8 ASC, 2 ASC, 3 ASC, 4 ASC, 31 ASC 

最后,它整理了我的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51886459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档