如何将IF或CASE用于通过每条记录连接的两个SQL查询
我想使用如何将IF或CASE用于通过每条记录连接的两个SQL查询,sql,tsql,Sql,Tsql,我想使用IF或CASE语句,同时检查两个连接的SQL查询的每条记录 每个AccountID(AccountSDIF)都有自己独特的帐户创建日期和帐户的任务创建日期。如果计数(AccountSDIF)=1,则在帐户创建日期和帐户任务创建日期之间应用datediff函数。 如果count(AccountSDIF)>1,则在帐户创建日期和帐户的第一个任务创建日期之间应用datediff函数 这是我的查询,用于获取AccountID(AccountSDIF) 这是我的查询,用于获取帐户创建日期和帐户的
IF
或CASE
语句,同时检查两个连接的SQL查询的每条记录
每个AccountID(AccountSDIF)
都有自己独特的帐户创建日期和帐户的任务创建日期。如果计数(AccountSDIF)=1
,则在帐户创建日期和帐户任务创建日期之间应用datediff
函数。
如果count(AccountSDIF)>1
,则在帐户创建日期和帐户的第一个任务创建日期之间应用datediff
函数
这是我的查询,用于获取AccountID(AccountSDIF)
这是我的查询,用于获取帐户创建日期和帐户的任务创建日期
select
(A_Std.CreatedDate) as AccountCreatedDate
,(T_Std.CreatedDate) as AccountsTaskCreatedDate
,A_Std.AccountSFID
from [PSA].[Stg_Canonical_Task_Std] AS T_Std
LEFT JOIN [PSA].[Stg_Canonical_Account_Std] AS A_Std
ON T_Std.AccountID = A_Std.AccountSFID
INNER JOIN [PSA].[Stg_Canonical_Task_Custom] T_Cust
on T_Std.[TaskSFID] = T_Cust.[TaskSFID]
WHERE T_Cust.Activity_C IN ('Call', 'Email')
AND T_Std.Program_Name = 'DowWater'
AND T_Std.Status = 'Completed'
AND T_Std.AccountID IS NOT NULL
如果我理解:
SELECT
A_Std.AccountSFID
,datediff(A_Std.CREATEDDATE,min(T_Std.TASKCREATEDDATE))
FROM [PSA].[Stg_Canonical_Task_Std] AS T_Std
LEFT JOIN [PSA].[Stg_Canonical_Account_Std] AS A_Std
ON T_Std.AccountID = A_Std.AccountSFID
INNER JOIN [PSA].[Stg_Canonical_Task_Custom] T_Cust
on T_Std.[TaskSFID] = T_Cust.[TaskSFID]
WHERE T_Cust.Activity_C IN ('Call', 'Email')
AND T_Std.Program_Name = 'DowWater'
AND T_Std.Status = 'Completed'
AND T_Std.AccountID IS NOT NULL
GROUP BY A_Std.AccountSFID,A_Std.CREATEDDATE
这两件事似乎是同一件事?在帐户创建日期和帐户的第一个任务创建日期之间应用datediff。如果只有一个任务,那么它的创建日期将自动为第一个。谢谢@avery_larry,它工作得非常好!我对groupby子句总是有点困惑
SELECT
A_Std.AccountSFID
,datediff(A_Std.CREATEDDATE,min(T_Std.TASKCREATEDDATE))
FROM [PSA].[Stg_Canonical_Task_Std] AS T_Std
LEFT JOIN [PSA].[Stg_Canonical_Account_Std] AS A_Std
ON T_Std.AccountID = A_Std.AccountSFID
INNER JOIN [PSA].[Stg_Canonical_Task_Custom] T_Cust
on T_Std.[TaskSFID] = T_Cust.[TaskSFID]
WHERE T_Cust.Activity_C IN ('Call', 'Email')
AND T_Std.Program_Name = 'DowWater'
AND T_Std.Status = 'Completed'
AND T_Std.AccountID IS NOT NULL
GROUP BY A_Std.AccountSFID,A_Std.CREATEDDATE