【问题标题】:Display the Count using join two table with store Procedure使用存储过程连接两个表来显示计数
【发布时间】:2020-05-09 08:19:20
【问题描述】:

我有一张两张表,一张是付款,另一张是集群。我已经使用 Store Proceudre 加入了两张表现在问题是我需要获取计数

      Alter Procedure [dbo].[JKLL_Get_information_clusterwise_firstlevel_JMSL]
       AS
       Begin
         t1.Payment_ID=t2.ClusterID
        SELECT *,t2.ClusterName
         FROM JKLL_Payment_Upload t1, Cluster t2
        where Payment_Status=1 and Reject_Status=0 and First_Level_Approval_Status=0 
         END

价值与连接表一起出现 现在的问题是我需要使用 Clustername 来获取计数 例如

            If(ClusterName="Usa")
    select count(Payment_ID) as value =15;

我需要使用 PaymentID 获取计数。你能帮我编辑一下上面的代码吗..

【问题讨论】:

    标签: c# sql stored-procedures


    【解决方案1】:

    你需要GROUP,然后你可以COUNT你已经分组了:

    SELECT COUNT(t2.ClusterName), t2.ClusterName
    FROM JKLL_Payment_Upload t1, Cluster t2
    WHERE Payment_Status=1 and Reject_Status=0 and First_Level_Approval_Status=0 
    GROUP BY t2.ClusterName
    

    备注:

    • 备注 1:分组时不能使用SELECT *
    • 备注 2:出于性能考虑,我在您的声明中添加了INNER JOIN
    • 备注 3:我会在没有存储过程的情况下开始。尽量让你 SELECT 放在首位

    更新:

    我假设这样的表格:

    您的数据需要有关系。在此示例中:t1.ClusterID = t2.ClusterID。因此,我们可以使用以下查询连接表:

    SELECT COUNT(t2.ClusterName) AS CountOfPayments, t2.ClusterName
    FROM #JKLL_Payment_Upload t1
    INNER JOIN #Cluster t2
        ON  t1.ClusterID = t2.ClusterID
    --WHERE Payment_Status=1 and Reject_Status=0 and First_Level_Approval_Status=0 
    GROUP BY t2.ClusterName
    

    【讨论】:

    • 没有值出现
    • 我不知道你的数据结构。尝试不使用 JOIN。更新答案
    • 我们如何在条件下使用 SP
    • within condition 是什么意思?
    • 现在值即将到来 22 Usa,22-Canada,22-Japan 当我运行第一个存储程序时我应该得到 Usa 22 只有当我运行第二个程序时我需要获取加拿大值以及何时我运行第三个程序,我只需要去日本
    猜你喜欢
    • 2015-12-29
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多