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从选择中取出