Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 server 如何仅返回varchar列值不等于某个值的值_Sql Server_Tsql - Fatal编程技术网

Sql server 如何仅返回varchar列值不等于某个值的值

Sql server 如何仅返回varchar列值不等于某个值的值,sql-server,tsql,Sql Server,Tsql,我试图计算月销售额,但不包括特定客户的某些销售额。这可能吗 我尝试了下面的方法,结果返回一个分组依据错误,但是我不想分组依据PickupLocation\u ContactName,我想让每月的总销售额少返回飓风客户订单 我对数据库有只读访问权限 SELECT SUM (Price), CONVERT(CHAR(7), PickupDateTime, 120) as Year_Month, PickupLocation_ContactName FROM d

我试图计算月销售额,但不包括特定客户的某些销售额。这可能吗

我尝试了下面的方法,结果返回一个
分组依据
错误,但是我不想分组依据
PickupLocation\u ContactName
,我想让每月的总销售额少返回飓风客户订单

我对数据库有只读访问权限

SELECT 
    SUM (Price), 
    CONVERT(CHAR(7), PickupDateTime, 120) as Year_Month, 
    PickupLocation_ContactName
FROM 
    dbo.DeliveryRequests
WHERE 
    dbo.DeliveryRequests.PickupLocation_ContactName NOT LIKE 'Hurricanes%'
GROUP BY 
    CONVERT(CHAR(7), PickupDateTime, 120)
ORDER BY 
    Year_Month

选择部分中的任何字段都必须是聚合或group by中的字段,并且PickupLocation\u ContactName不在group by中。将其添加到GROUPBY中,您的查询就可以了

SELECT SUM (Price), CONVERT(CHAR(7), PickupDateTime, 120) as Year_Month, PickupLocation_ContactName
    FROM dbo.DeliveryRequests
    WHERE dbo.DeliveryRequests.PickupLocation_ContactName NOT LIKE 'Hurricanes%'
    GROUP BY CONVERT(CHAR(7), PickupDateTime, 120), PickupLocation_ContactName
    ORDER BY Year_Month

选择部分中的任何字段都必须是聚合或group by中的字段,并且PickupLocation\u ContactName不在group by中。将其添加到GROUPBY中,您的查询就可以了

SELECT SUM (Price), CONVERT(CHAR(7), PickupDateTime, 120) as Year_Month, PickupLocation_ContactName
    FROM dbo.DeliveryRequests
    WHERE dbo.DeliveryRequests.PickupLocation_ContactName NOT LIKE 'Hurricanes%'
    GROUP BY CONVERT(CHAR(7), PickupDateTime, 120), PickupLocation_ContactName
    ORDER BY Year_Month

我创建了一个示例,尽管它在SYBASE ASE 15中

请看下面

create table DeliveryRequests 
(
Price int,
PickupLocation_ContactName varchar(10),
PickupDateTime date
)

insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (20 , "xxx" , "2015-06-23" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (20 , "xxx" , "2015-06-24" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (20 , "xxx" , "2015-06-25" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (10 , "xxx" , "2015-05-23" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (10 , "xxx" , "2015-05-24" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (10 , "xxx" , "2015-05-25" )


insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (30 , "yyy" , "2015-06-23" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (30 , "yyy" , "2015-06-24" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (30 , "yyy" , "2015-06-25" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (40 , "yyy" , "2015-05-23" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (40 , "yyy" , "2015-05-24" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (40 , "yyy" , "2015-05-25" )

insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (50 , "zzz" , "2015-06-23" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (50 , "zzz" , "2015-06-24" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (50 , "zzz" , "2015-06-25" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (60 , "zzz" , "2015-05-23" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (60 , "zzz" , "2015-05-24" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (60 , "zzz" , "2015-05-25" )

select sum(Price) sales, PickupLocation_ContactName,month(PickupDateTime) month
from DeliveryRequests where
PickupLocation_ContactName <> "zzz"
group by PickupLocation_ContactName, month(PickupDateTime)

我创建了一个示例,尽管它在SYBASE ASE 15中

请看下面

create table DeliveryRequests 
(
Price int,
PickupLocation_ContactName varchar(10),
PickupDateTime date
)

insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (20 , "xxx" , "2015-06-23" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (20 , "xxx" , "2015-06-24" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (20 , "xxx" , "2015-06-25" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (10 , "xxx" , "2015-05-23" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (10 , "xxx" , "2015-05-24" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (10 , "xxx" , "2015-05-25" )


insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (30 , "yyy" , "2015-06-23" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (30 , "yyy" , "2015-06-24" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (30 , "yyy" , "2015-06-25" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (40 , "yyy" , "2015-05-23" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (40 , "yyy" , "2015-05-24" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (40 , "yyy" , "2015-05-25" )

insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (50 , "zzz" , "2015-06-23" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (50 , "zzz" , "2015-06-24" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (50 , "zzz" , "2015-06-25" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (60 , "zzz" , "2015-05-23" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (60 , "zzz" , "2015-05-24" )
insert into DeliveryRequests(Price,PickupLocation_ContactName,PickupDateTime)
values (60 , "zzz" , "2015-05-25" )

select sum(Price) sales, PickupLocation_ContactName,month(PickupDateTime) month
from DeliveryRequests where
PickupLocation_ContactName <> "zzz"
group by PickupLocation_ContactName, month(PickupDateTime)

您可以使用窗口版本的
SUM
获取每年/每月的金额,即每月总销售额,以及
PickupLocation\u ContactName

SELECT DISTINCT
    SUM (Price) OVER (PARTITION BY Year_Month) AS SumPerYearMonth, 
    Year_Month,
    PickupLocation_ContactName
FROM 
    dbo.DeliveryRequests
CROSS APPLY (
    SELECT CONVERT(CHAR(7), PickupDateTime, 120)) AS x(Year_Month)
WHERE 
    dbo.DeliveryRequests.PickupLocation_ContactName NOT LIKE 'Hurricanes%'
ORDER BY Year_Month
这将为每个
Year\u Month
组中的每个
PickupLocation\u ContactName
重复提供
SumPerYearMonth


您可以使用窗口版本的
SUM
获取每年/每月的金额,即每月总销售额,以及
PickupLocation\u ContactName

SELECT DISTINCT
    SUM (Price) OVER (PARTITION BY Year_Month) AS SumPerYearMonth, 
    Year_Month,
    PickupLocation_ContactName
FROM 
    dbo.DeliveryRequests
CROSS APPLY (
    SELECT CONVERT(CHAR(7), PickupDateTime, 120)) AS x(Year_Month)
WHERE 
    dbo.DeliveryRequests.PickupLocation_ContactName NOT LIKE 'Hurricanes%'
ORDER BY Year_Month
这将为每个
Year\u Month
组中的每个
PickupLocation\u ContactName
重复提供
SumPerYearMonth


然后它不计算月总销售额-有办法吗?然后它不计算月总销售额-有办法吗?然后只需将PickupLocation\u ContactName从选择中取出,然后将PickupLocation\u ContactName从选择中取出