Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用count(case-when)获取查询返回的帐号计数? 选择DISTINCT s、 分行作为[分行] ,s.CREATEDBYUSER AS[出纳员编号] ,acct.accountnumber为[帐号] ,计数(s.CLOSEDATE为空时的不同大小写) s.CHARGEOFFDATE为空 然后是s.PARENTACCOUNT 其他0 结束 )作为[股份] ,s.CLOSEDATE为空时的情况 s.CHARGEOFFDATE为空 然后是美国的平衡 其他0 终止为[共享余额] ,s.CLOSEDATE为空时的情况 s.CHARGEOFFDATE为空 然后是s型 其他0 结束为[股份类型] ,s.CLOSEDATE为空时的情况 s.CHARGEOFFDATE为空 然后是美国的描述 否则无效 结束为[股份说明] 从ARCUSYM000.dbo.ACCOUNT账户 左连接ARCUSYM000.dbo.s 在acct.ACCOUNTNUMBER=s.PARENTACCOUNT和s.ProcessDate=acct.ProcessDate上 其中acct.CLOSEDATE为空 s.CLOSEDATE为空 s.chargeoffdate为空 和((s.OPENDATE>=@StartDate和s.OPENDATE=@StartDate和acct.OPENDATE_Sql_Sql Server - Fatal编程技术网

Sql 如何使用count(case-when)获取查询返回的帐号计数? 选择DISTINCT s、 分行作为[分行] ,s.CREATEDBYUSER AS[出纳员编号] ,acct.accountnumber为[帐号] ,计数(s.CLOSEDATE为空时的不同大小写) s.CHARGEOFFDATE为空 然后是s.PARENTACCOUNT 其他0 结束 )作为[股份] ,s.CLOSEDATE为空时的情况 s.CHARGEOFFDATE为空 然后是美国的平衡 其他0 终止为[共享余额] ,s.CLOSEDATE为空时的情况 s.CHARGEOFFDATE为空 然后是s型 其他0 结束为[股份类型] ,s.CLOSEDATE为空时的情况 s.CHARGEOFFDATE为空 然后是美国的描述 否则无效 结束为[股份说明] 从ARCUSYM000.dbo.ACCOUNT账户 左连接ARCUSYM000.dbo.s 在acct.ACCOUNTNUMBER=s.PARENTACCOUNT和s.ProcessDate=acct.ProcessDate上 其中acct.CLOSEDATE为空 s.CLOSEDATE为空 s.chargeoffdate为空 和((s.OPENDATE>=@StartDate和s.OPENDATE=@StartDate和acct.OPENDATE

Sql 如何使用count(case-when)获取查询返回的帐号计数? 选择DISTINCT s、 分行作为[分行] ,s.CREATEDBYUSER AS[出纳员编号] ,acct.accountnumber为[帐号] ,计数(s.CLOSEDATE为空时的不同大小写) s.CHARGEOFFDATE为空 然后是s.PARENTACCOUNT 其他0 结束 )作为[股份] ,s.CLOSEDATE为空时的情况 s.CHARGEOFFDATE为空 然后是美国的平衡 其他0 终止为[共享余额] ,s.CLOSEDATE为空时的情况 s.CHARGEOFFDATE为空 然后是s型 其他0 结束为[股份类型] ,s.CLOSEDATE为空时的情况 s.CHARGEOFFDATE为空 然后是美国的描述 否则无效 结束为[股份说明] 从ARCUSYM000.dbo.ACCOUNT账户 左连接ARCUSYM000.dbo.s 在acct.ACCOUNTNUMBER=s.PARENTACCOUNT和s.ProcessDate=acct.ProcessDate上 其中acct.CLOSEDATE为空 s.CLOSEDATE为空 s.chargeoffdate为空 和((s.OPENDATE>=@StartDate和s.OPENDATE=@StartDate和acct.OPENDATE,sql,sql-server,Sql,Sql Server,如果您可以将count(distinct)s相加以获得所需内容(如示例中所示,您可以使用窗口函数: SELECT DISTINCT s.branch AS [Branch] , s.CREATEDBYUSER AS [Teller Number] , acct.accountnumber AS [Account Number] , COUNT( DISTINCT CASE WHEN s.CLOSEDATE is null AND s.CHARGE

如果您可以将
count(distinct)
s相加以获得所需内容(如示例中所示,您可以使用窗口函数:

SELECT DISTINCT
    s.branch AS [Branch]
    , s.CREATEDBYUSER AS [Teller Number]
    , acct.accountnumber AS [Account Number]
    , COUNT( DISTINCT CASE WHEN s.CLOSEDATE is null 
        AND s.CHARGEOFFDATE is NULL
        then s.PARENTACCOUNT
        else 0
        END
    ) AS [Shares]
    , CASE WHEN s.CLOSEDATE is null 
        AND s.CHARGEOFFDATE is NULL 
        THEN s.balance 
        else 0
    END AS [SharesBalance]
    , CASE WHEN s.CLOSEDATE is null 
        AND s.CHARGEOFFDATE is NULL
        THEN s.TYPE
        ELSE 0
    END AS [Share Type]
    , CASE WHEN s.CLOSEDATE is null 
        AND s.CHARGEOFFDATE is NULL
        then s.DESCRIPTION 
        ELSE NULL
    END AS [Share Description]
from ARCUSYM000.dbo.ACCOUNT acct
    left join ARCUSYM000.dbo.savings s
        on acct.ACCOUNTNUMBER = s.PARENTACCOUNT and s.ProcessDate = acct.ProcessDate
where acct.CLOSEDATE is null  
    AND s.CLOSEDATE is null 
    AND s.chargeoffdate is null 
    AND ((s.OPENDATE >= @StartDate AND s.OPENDATE <= @EndDate)
    OR (acct.OPENDATE >= @StartDate AND acct.OPENDATE <= @EndDate))
    AND acct.memberstatus = 0 
    AND s.branch is not null 
    AND s.branch IN (@BranchNum)
    AND s.ProcessDate = CONVERT(VARCHAR(8), dateadd(day,-1, getdate()), 112)
    AND acct.ProcessDate = CONVERT(VARCHAR(8), dateadd(day,-1, getdate()), 112)
GROUP BY s.BRANCH
    , s.CREATEDBYUSER
    , acct.ACCOUNTNUMBER
    , s.CLOSEDATE
    , s.CHARGEOFFDATE
    , s.BALANCE
    , s.TYPE
    , s.DESCRIPTION
    , s.SHARECODE
    , s.OVERDRAFTTOLERANCE
    , s.OPENDATE
ORDER BY s.CREATEDBYUSER, acct.ACCOUNTNUMBER
如果您需要对帐户的所有行进行
COUNT(DISTINCT)
计数,那么这就有点复杂了

注意:
ELSE 0
带有
COUNT(DISTINCT)
似乎可疑。我删除了
ELSE
子句。默认值为
NULL
,将不被计数。

选择q.Branch
SUM(COUNT(DISTINCT CASE WHEN s.CLOSEDATE is null AND s.CHARGEOFFDATE is NULL
                        THEN s.PARENTACCOUNT
                   END
          )
    ) OVER (PARTITION BY acct.accountnumber) AS [Shares]
,q.[出纳员编号] ,q.[账号] ,将(q.份额)除以(按q[账号]划分)作为[份额] ,q.SharesBalance ,q.[股份类型] ,q.[股份说明] 从( 选择不同的 s、 分行作为[分行] ,s.CREATEDBYUSER AS[出纳员编号] ,acct.accountnumber为[帐号] ,计数(s.CLOSEDATE为空时的不同大小写) s.CHARGEOFFDATE为空 和(s.OPENDATE>=@StartDate和s.OPENDATE=@StartDate和s.OPENDATE=@StartDate和acct.OPENDATE
SELECT q.Branch
, q.[Teller Number]
, q.[Account Number]
, COUNT(q.Shares) OVER (PARTITION BY q.[Account Number]) AS [Shares]
, q.SharesBalance
, q.[Share Type]
, q.[Share Description]
FROM(

    SELECT DISTINCT
    s.branch AS [Branch]
    , s.CREATEDBYUSER AS [Teller Number]
    , acct.accountnumber AS [Account Number]
    , COUNT(DISTINCT CASE WHEN s.CLOSEDATE is null 
        AND s.CHARGEOFFDATE is NULL
        AND (s.OPENDATE >= @StartDate AND s.OPENDATE <= @EndDate)
        then s.PARENTACCOUNT
        END) AS [Shares]
    , CASE WHEN s.CLOSEDATE is null 
    AND s.CHARGEOFFDATE is NULL 
    THEN s.balance 
    else 0
    END AS [SharesBalance]
    , CASE WHEN s.CLOSEDATE is null 
    AND s.CHARGEOFFDATE is NULL
    THEN s.TYPE
    ELSE 0
    END AS [Share Type]
    , CASE WHEN s.CLOSEDATE is null 
    AND s.CHARGEOFFDATE is NULL
    then s.DESCRIPTION 
    ELSE NULL
    END AS [Share Description]
    from ARCUSYM000.dbo.ACCOUNT acct
    left join ARCUSYM000.dbo.savings s
        on acct.ACCOUNTNUMBER = s.PARENTACCOUNT and s.ProcessDate = acct.ProcessDate
    where acct.CLOSEDATE is null  
        AND s.CLOSEDATE is null 
        AND s.chargeoffdate is null 
        AND ((s.OPENDATE >= @StartDate AND s.OPENDATE <= @EndDate)
            OR (acct.OPENDATE >= @StartDate AND acct.OPENDATE <= @EndDate))
        AND acct.memberstatus = 0 
        AND s.branch is not null 
        AND s.branch IN (@BranchNum)
        AND s.ProcessDate = CONVERT(VARCHAR(8), dateadd(day,-1, getdate()), 112)
        AND acct.ProcessDate = CONVERT(VARCHAR(8), dateadd(day,-1, getdate()), 112)
    GROUP BY s.BRANCH
        , s.CREATEDBYUSER
        , acct.ACCOUNTNUMBER
        , s.CLOSEDATE
        , s.CHARGEOFFDATE
        , s.BALANCE
        , s.TYPE
        , s.DESCRIPTION
        , acct.STATEMENTMAILCODE
        , s.SHARECODE
        , s.OVERDRAFTTOLERANCE
        , s.OPENDATE
        , s.PARENTACCOUNT
) q
GROUP BY q.Branch
, q.[Teller Number]
, q.[Account Number]
, q.SharesBalance
, q.Shares
, q.[Share Type]
, q.[Share Description]