请帮忙!!我是SQL编程的全新人,我正在教我自己的一切。我终于遇到了一个我似乎无法解决的问题。希望有人可以提供帮助。我有以下表格。我需要做的是使用FROISEDI中的RECDATE并在WEI4CPP中计算该日期之前和之后的所有不同日期(I4C7DZ)。我已经使用了下面的代码,它似乎工作,直到我有一个具有相同CACLAIM值的记录。我也有两个记录具有相同CACLAIM和DOI的实例,因此我的代码也不起作用。不知何故,我需要使用FROISEDI的AGCLAIM,但我不知道如何将它拉入我的Counts表。哦,我正在使用SAS,所以它不是SQL,而是非常接近。谢谢你的帮助!
TABLE: FROISEDI
AGCLAIM RECDATE CACLAIM DOI
09073589 1/29/09 09 41615 1/28/09
09115390 3/01/09 00012HR09 2/23/09
09234567 4/20/09 003140010 1/2/09
09154826 5/01/09 003140010 4/28/09
TABLE: WEI4CPP
I4C7DZ I4X6TX I4YWTX I4YFTX
1/28/09 1/28/09 09 41615
1/29/09 09073589 1/28/09 09 41615
1/30/09 09073589 1/28/09 09 41615
2/24/09 2/23/09 00012HR09
2/28/09 2/23/09 00012HR09
3/01/09 09115390 2/23/09 00012HR09
3/15/09 09115390 2/23/09 00012HR09
1/15/09 1/02/09 003140010
1/20/09 1/02/09 003140010
2/08/09 1/02/09 003140010
3/19/09 1/02/09 003140010
4/20/09 09234567 1/02/09 003140010
5/01/09 09154826 4/28/09 003140010
TABLE I NEED TO PRODUCE: COUNTS
AGCLAIM CACLAIM DOI SUBMITS
09073589 09 41615 1/28/09 2
09115390 00012HR09 2/23/09 3
09234567 003140010 1/02/09 5
09154826 003140010 4/28/09 1
我使用过的代码:
PROC SQL;
CREATE TABLE COUNTS AS
SELECT I4YWTX AS DOI3,
I4YFTX AS CLMNUM2,
COUNT(DISTINCT I4C7DZ) AS SUBMITS
FROM WAREHOUS.WEI4CPP A
WHERE I4C7DZ<=(SELECT RECDATE
FROM FROISEDI
WHERE FROISEDI.CACLAIM=A.I4YFTX
AND FROISEDI.DOI=A.I4YWTX)
GROUP BY WEI4CPP.I4YFTX, WEI4CPP.I4YWTX;
QUIT;
答案 0 :(得分:1)
没试过。 试试这个
SELECT
AGCLAIM,
CACLAIM,
DOI, T.cnt + 1 AS SUBMITS
FROM
FROISEDI
INNER JOIN
(
SELECT
COUNT(*) cnt,
I4YFTX ,
I4YWTX
FROM
WEI4CPP
WHERE
ISNULL(I4X6TX,0) = 0
GROUP BY
I4YFTX, I4YWTX
) T
ON FROISEDI.CACLAIM = T.I4YFTX
答案 1 :(得分:0)
我没有详细介绍你的逻辑,但要确保两个日期都存储为数值。我不止一次看到存储为char的日期,因此GT和LT不会按照你的想法工作。
答案 2 :(得分:0)
看起来WEI4CPP.I4YFTX是FROISEDI.CACLAIM链接值,而WEI4CPP.I4YWTX是FROISEDI.DOI。它就这么简单吗?
SELECT fr.AGCLAIM, fr.CACLAIM, fr.DOI, COUNT(we.I4C7DZ) as SUBMITS
FROM FROISEDI fr
INNER JOIN WEI4CPP we
ON we.I4YFTX = fr.CACLAIM
AND we.I4YWTX = fr.DOI
AND ISNULL(we.I4X6TX, fr.AGCLAIM) = fr.AGCLAIM
WHERE we.I4C7DZ <= fr.RECDATE
GROUP BY fr.AGCLAIM, fr.CACLAIM, fr.DOI
请注意,如果行具有相同的DOI和CACLAIM,但WEI4CPP.I4X6TX列为空,则会出现此问题。在这种情况下,我不了解您关于解决他们所属的AGCLAIM的业务规则。如果他们被填写并且不匹配,我可以拒绝他们,但我需要某种与日期相关或其他信息来匹配他们。