Sql server 失败时,为什么我的查询在案例中?
我正在尝试运行SQL Server案例查询,但遇到错误。让我试着解释我为什么要做我正在做的事情,以及我在最终结果中寻找的东西 我有两张桌子。1有一个opportunity ID在本例中是A.ID,第二个表中有一列我对B.Q3ABM_______C感兴趣的帐户。在本例中,我要求SQL做的是,对于B.Q3ABM______C列中的每一个A.ID为null,给我一个1,反之亦然。 为什么会失败Sql server 失败时,为什么我的查询在案例中?,sql-server,null,case,Sql Server,Null,Case,我正在尝试运行SQL Server案例查询,但遇到错误。让我试着解释我为什么要做我正在做的事情,以及我在最终结果中寻找的东西 我有两张桌子。1有一个opportunity ID在本例中是A.ID,第二个表中有一列我对B.Q3ABM_______C感兴趣的帐户。在本例中,我要求SQL做的是,对于B.Q3ABM______C列中的每一个A.ID为null,给我一个1,反之亦然。 为什么会失败 SELECT B.ID as Account_ID, B.FULL_ACCOUNT_ID__C, A.ID
SELECT B.ID as Account_ID, B.FULL_ACCOUNT_ID__C, A.ID as Opportunity_ID,A.name, stagename,closedate,A.createddate,
OPPORTUNITY_PRODUCT__C,AMOUNT, B.Q3ABM__C, B.Drip_Campaign_Code__c,OPPORTUNITYTYPE_STRING__C,
CASE
WHEN (SELECT A.id FROM SF_OPPORTUNITY as a
LEFT JOIN SF_ACCOUNT as b on A.Accountid = b.ID where B.Q3ABM__C IS NULL) THEN 1
ELSE 0
END AS 'Does Not Exist in Q3DM',
CASE
WHEN (SELECT A.id FROM SF_OPPORTUNITY as a
LEFT JOIN SF_ACCOUNT as b on A.Accountid = b.ID where B.Q3ABM__C IS NOT NULL) THEN 1
ELSE 0
END AS 'Exists in Q3DM'
FROM SF_OPPORTUNITY as a
LEFT JOIN SF_ACCOUNT as b on a.ACCOUNTID = b.ID
WHERE A.createddate >= '7-1-2019'
AND CLOSEDATE <= '12-31-2019'
谢谢 如果要在特定时段内选择记录,但要检查所有记录是否为空,而不是为空,则可以检查哪个ID有空值。如果存在空值,则我们可以计算第一个值不存在于Q3DM列中,如果不存在,则第二个值存在于Q3DM中: 如果您只对给定期间的值感兴趣,并且只检查当前记录的值:
SELECT B.ID as Account_ID
,B.FULL_ACCOUNT_ID__C
,A.ID as Opportunity_ID
,A.name
,stagename
,closedate
,A.createddate
,OPPORTUNITY_PRODUCT__C
,AMOUNT
,B.Q3ABM__C
,B.Drip_Campaign_Code__c
,OPPORTUNITYTYPE_STRING__C
,CASE DS.Id IS NULL THEN 1 ELSE 0 END 'Does Not Exist in Q3DM'
,CASE DS.Id IS NOT NULL THEN 1 ELSE 0 END 'Exists in Q3DM'
FROM SF_OPPORTUNITY as a
LEFT JOIN SF_ACCOUNT as b
on a.ACCOUNTID = b.ID
LEFT JOIN DataSource DS
ON A.ACCOUNTID = DS.ID
WHERE A.createddate >= '7-1-2019'
AND CLOSEDATE <= '12-31-2019'
根据您的要求,尝试在“选择”和“位置”条款中使用此列:
SELECT A.*,B.* ,
CASE WHEN B.Q3ABM__C IS NULL THEN 1 ELSE 0 END AS 'DOES NOT EXISIT IN Q3DM',
CASE WHEN B.Q3ABM__C IS NOT NULL THEN 1 ELSE 0 END AS 'EXISITS IN Q3DM'
FROM PLS.SF_OPPORTUNITY A
FULL JOIN PLS.SF_ACCOUNT B ON A.ACCOUNTID=B.ID
SELECT A.*,B.* ,
CASE WHEN B.Q3ABM__C IS NULL THEN 1 ELSE 0 END AS 'DOES NOT EXISIT IN Q3DM',
CASE WHEN B.Q3ABM__C IS NOT NULL THEN 1 ELSE 0 END AS 'EXISITS IN Q3DM'
FROM PLS.SF_OPPORTUNITY A
FULL JOIN PLS.SF_ACCOUNT B ON A.ACCOUNTID=B.ID