我需要SQL中的一个案例的帮助,所以我必须在表CLIENTS中的“Above”或“Below”上填写一列DIFFERENCE ,如果表中其他栏中的日期 - DOCUMENT从现在起高于或低于4个月。我试着用这个我想根据需要比较另一个表中的数据的条件更新列中的值
UPDATE CLIENTS
SET DIFFERENCE = CASE WHEN MONTHS_BETWEEN(TO_DATE((SELECT DATA FROM DOCUMENT, CLIENTS WHERE DOCUMENT.ID_CLIENT=CLIENTS.ID_CLIENT),'DD.MM.YYYY'),TO_DATE(SYSDATE,'DD.MM.YYYY')) < 4 THEN 'Below' ELSE 'Above' END
但它返回很多价值,所以我试图JOIN表和
UPDATE CLIENTS
SET DIFFERENCE = CASE WHEN MONTHS_BETWEEN(TO_DATE(DATA,'DD.MM.YYYY'),TO_DATE(SYSDATE,'DD.MM.YYYY')) < 4 THEN 'Below' ELSE 'Above' END
FROM CLIENTS JOIN DOCUMENT
ON DOCUMENT.ID_CLIENT=CLIENTS.ID_CLIENT
但这次说不正确地结束。 我正在使用Oracle数据库。 如果你看到答案,请写信给我!
预先感谢您!
SELECT CLIENTS.ID_CLIENT,MIN(DOCUMENT.DATA) AS "DATA"
FROM DOCUMENT,CLIENTS
WHERE CLIENTS.ID_CLIENT=DOCUMENT.ID_CLIENT
GROUP BY CLIENTS.ID_CLIENT
和一些结果:
ID_CLIENT DATA 54 2014年1月23日 57 2014年1月23日 78 2014年1月23日87 2014年1月24日 91 01 /二千○十四分之二十四
我发现该溶液中,
UPDATE CLIENTS
SET DIFFERENCE = CASE WHEN MONTHS_BETWEEN(TO_DATE((SELECT MIN(DATA) FROM DOCUMENT, CLIENTS WHERE DOCUMENT.ID_CLIENT=CLIENTS.ID_CLIENT),'MM.DD.YYYY'),TO_DATE(SYSDATE,'MM.DD.YYYY')) < 4 THEN 'Below' ELSE 'Above' END
错误是'MM.DD.YYYY'...首先我使用'DD.MM.YYYY' - 非常愚蠢的错误!
感谢您的所有答案! ekad你真的帮助了我!
几个月为同一个客户端,应该设置“差异”? – 2014-10-04 06:48:31
欢迎使用StackOverflow:如果您发布代码,XML或数据样本,请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(“{}”)以精确地格式化和语法突出它! – 2014-10-04 06:54:14
Joachim Isaksson你是对的,我必须找到一个客户的所有文件的解决方案,如果有文件的数据之间的月份是从现在开始超过4个月,在列中说差异 - 在下面的其他部分 – Alex1 2014-10-04 08:12:18