Sql server SQL Server:查询报表
我需要为每周、每月、每年的付款以及哪种服务的销售额更大创建查询 以下是我为1至30天付款编写的SQL代码:Sql server SQL Server:查询报表,sql-server,tsql,Sql Server,Tsql,我需要为每周、每月、每年的付款以及哪种服务的销售额更大创建查询 以下是我为1至30天付款编写的SQL代码: SELECT payments_date, payments_amount, DATEDIFF(DAY, [payments_date], GETDATE()) AS Diff FROM dbo.payments WHERE DATEDIFF(DAY, payments_date, GETDATE()) BETWEEN 1 AND 30 ORDER B
SELECT
payments_date, payments_amount,
DATEDIFF(DAY, [payments_date], GETDATE()) AS Diff
FROM
dbo.payments
WHERE
DATEDIFF(DAY, payments_date, GETDATE()) BETWEEN 1 AND 30
ORDER BY
payments_amount DESC
dbo.treatments
是不同的表dbo.payments
是不同的表
dbo.treatments
列为treatments\u name
,dbo.payments
列为payments\u amount
。所以我需要知道哪种疗法的销量更大
我不认为你需要更多的细节
dbo.治疗
treatments_id
taxes_id
treatmentstype_id
treatments_code
treatments_name
treatments_price
treatments_isunitprice
treatments_mexpiration
treatments_notes
payments_id
patiens_id
payments_date
payments_amount
payments_notes
dbo.payments
treatments_id
taxes_id
treatmentstype_id
treatments_code
treatments_name
treatments_price
treatments_isunitprice
treatments_mexpiration
treatments_notes
payments_id
patiens_id
payments_date
payments_amount
payments_notes
选择
,最大(付款额)
从…起
dbo.payments
其中datediff(day,payments\u date,getdate())介于1和30之间
分组
对于问题的第二部分,假设已付款和未付款为标志:
select
<service_column_name>, COUNT(payed), COUNT(not_payed)
from
dbo.payments
选择
,计数(已付款),计数(未付款)
从…起
dbo.payments
其中选择,最大(付款额) 从…起 dbo.payments 其中datediff(day,payments\u date,getdate())介于1和30之间 分组
我们需要样本数据和预期结果您需要解释什么是服务以及如何通过样本数据或表描述来查看某人是否已付款。我想您在查询中使用了payments\u date列,所以这里也有payments\u date列。你如何连接付款和治疗表,付款表中是否有对治疗表的引用?不,它没有任何引用,这就是为什么我问“有两个不同的表必须给我带来价值,我不知道如何请列出
付款
表中的所有列以及治疗
表中的所有列我在执行时使用了您的代码我收到此消息8121,级别16,状态1,第10行列“dbo.payments.payments_date”在HAVING子句中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。Msg 8121,第16级,状态1,第10行列“dbo.payments.payments\u date”在HAVING子句中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中,付款金额在另一个表dbo中。payments@Charlie你为什么拒绝用要求的信息来改进你的问题,除非您这样做,否则您将不会得到任何限定答案。我已经写下了表名和列,我想知道它们之间的差异HAVING
应仅用于聚合列-当您想对具有SUM
,MAX
,AVG
等的列设置条件时,你真的应该用WHERE