Sql server 不给我任何信息,因为我的数据中没有状态为0的实例。我希望'transactions=0-这有意义吗?“transactions”是“COUNT(Status)”的别名。您说希望事务为0,但也说没有计数(状态)0。此列是否为您返回了正确的值?我猜您是想使用S

Sql server 不给我任何信息,因为我的数据中没有状态为0的实例。我希望'transactions=0-这有意义吗?“transactions”是“COUNT(Status)”的别名。您说希望事务为0,但也说没有计数(状态)0。此列是否为您返回了正确的值?我猜您是想使用S,sql-server,Sql Server,不给我任何信息,因为我的数据中没有状态为0的实例。我希望'transactions=0-这有意义吗?“transactions”是“COUNT(Status)”的别名。您说希望事务为0,但也说没有计数(状态)0。此列是否为您返回了正确的值?我猜您是想使用SUM(状态为NULL时为0,否则为1)“Transactions”是“COUNT(Status)”的别名-这是正确的。Yeh我希望我的alias列事务返回当月所有为0的值,因此供应商列表将仅为本月事务中有“0”的供应商。谢谢你,很抱歉,这里发生


不给我任何信息,因为我的数据中没有状态为0的实例。我希望'transactions=0-这有意义吗?“transactions”是“COUNT(Status)”的别名。您说希望事务为0,但也说没有计数(状态)0。此列是否为您返回了正确的值?我猜您是想使用
SUM(状态为NULL时为0,否则为1)
“Transactions”是“COUNT(Status)”的别名-这是正确的。Yeh我希望我的alias列事务返回当月所有为0的值,因此供应商列表将仅为本月事务中有“0”的供应商。谢谢你,很抱歉,这里发生了一些事情,我的sql不是最好的。你能解释一下吗?谢谢你,很抱歉这里发生了一些事情,我的sql不是最好的。你能解释一下吗?谢谢@Ezlo,不过这不会给我带来任何麻烦吗?@Taz确保你至少有一个组织当月的交易计数为0,否则它不会给你任何结果。我肯定会@Ezlo,但不确定为什么它没有给我任何行。@Taz尝试使用版本中的查询查询当月有0笔交易的组织。出现错误“列‘tx.Sending_organization’在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。”谢谢@Ezlo,但是,这不会给我任何行?@Taz请确保您至少有一个组织当前月的交易计数为0,否则它不会给您任何结果。我肯定会@Ezlo,但不确定为什么它没有给我任何行。@Taz尝试使用版本中的查询查询当月有0笔交易的组织。出现错误“列‘tx.Sending_organization’在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。”
SELECT distinct sending_organisation AS [Supplier], t1.date, COUNT(Status) AS [Transactions],  Month(t1.Date) SO_Month, Year(t1.date) SO_Year
 FROM tx

   CROSS APPLY ( VALUES (CONCAT(left(DATENAME(mm, Date_Reported),3),' ',
                             DATENAME(yyyy, Date_Reported)),
                      DATEPART(mm, Date_Reported)
                     )
            ) t1 (Date, Morder)

where  Date >= DATEADD(MONTH, -13, CAST(GETDATE() AS DATE))
GROUP BY t1.date, t1.Morder, sending_organisation
ORDER BY sending_organisation, date DESC;
DECLARE @sql NVARCHAR(MAX)=
'SELECT DISTINCT sending_organisation AS [Supplier], 
                 t1.date, 
                 Count(status)  AS [Transactions], 
                 Month(t1.date) so_month, 
                 Year(t1.date)  so_year 
 FROM            tx 
 CROSS apply     ( VALUES 
                 ( 
                                                 Concat(LEFT(Datename(mm, date_reported),3),'' '', Datename(yyyy, date_reported)), 
                                 Datepart(mm, date_reported) 
                 ) 
                 ) t1 (date, morder) 
 WHERE           date >= Dateadd(month, -13, Cast(Getdate() AS DATE)) 
 placeHolder 
 GROUP BY        t1.date, 
                 t1.morder, 
                 sending_organisation 
 ORDER BY        sending_organisation, 
                 date DESC; ';
IF(condition)
BEGIN
    SET @sql = replace(@sql,'placeHolder','AND WHERE transactionValue = 0 ');
END
ELSE 
BEGIN
    SET @sql = replace(@sql,'placeHolder',' ');
END
EXEC(@sql);
;WITH Data AS 
(
    -- This is your query without modifications
    SELECT distinct 
        sending_organisation AS [Supplier], 
        t1.date, 
        COUNT(Status) AS [Transactions],  
        Month(t1.Date) SO_Month, 
        Year(t1.date) SO_Year
    FROM 
        tx
        CROSS APPLY ( VALUES (CONCAT(left(DATENAME(mm, Date_Reported),3),' ',
                             DATENAME(yyyy, Date_Reported)),
                      DATEPART(mm, Date_Reported)
                     )
            ) t1 (Date, Morder)
    where  
        Date >= DATEADD(MONTH, -13, CAST(GETDATE() AS DATE))
    GROUP BY 
        t1.date, 
        t1.Morder, 
        sending_organisation
),
AvailableSuppliers AS
(
    SELECT DISTINCT
        Supplier = sending_organisation
    FROM
        tx AS D
),
CurrentMonthTransactionZero AS
(
    -- Determine which sending_organisation have no transactions on the current month
    SELECT
        A.Supplier
    FROM
        AvailableSuppliers AS A
    WHERE
        NOT EXISTS (
            SELECT
                'no transaction for current month'
            FROM
                tx AS T
            WHERE
                A.Supplier = T.sending_organisation AND
                Date_Reported >= DATEADD(DAY, 1, EOMONTH(GETDATE(), -1)) AND -- First day of current month
                Date_Reported <  DATEADD(DAY, 1, EOMONTH(GETDATE())) -- First day of next month
            )
)
SELECT
    D.*
FROM
    CurrentMonthTransactionZero AS D
    INNER JOIN CurrentMonthTransactionZero AS C ON D.Supplier = C.Supplier