【问题标题】:SQL Server 2014 Management StudioSQL Server 2014 管理工作室
【发布时间】:2017-02-03 14:26:13
【问题描述】:

我是一名非营利律师,正在尝试为我的代理机构设置 SQL Server 数据库。我遇到的问题是基于查询的:我需要一个简单的查询来汇总表中的总行数,而不是单元格内容的总和。

我使用 4 列 I to:律师姓名、客户姓名、审判日期和补救措施(最后 2 列是日期和美元金额,所以是整数]。

 *** Script for SelectTopNRows command from SSMS***
 SELECT TOP 100
 [attorney]
,[client]
,[trial_date]
,[remedy]
 FROM [MyLegalDB]
 WHERE [trial_date] between '20160101' and '20160531'

我正在尝试找到一种方法(脚本、批处理文件等),该方法将按月(根据试用日期)填充客户总数的案例总数,并汇总补救列。

抱歉含糊不清。有适当的特权规则。希望这有助于澄清。

谢谢

【问题讨论】:

  • 对于总行数,您可以使用 SQL 中的 count() 函数。执行类似 select count(*) from table 的操作
  • SSMS 还可以选择将查询输出到文本文件或 csv 用于 excel
  • 请阅读How to Ask
  • 选择律师,year(trail_date) as Year,month(trail_date) as Month,count(*) as CaseCount,count(distinct client) as ClientCount,sum(remedy) as RemedyTotal from MyLegalDB where trial_date在“20160101”和“20160531”之间按律师分组,年(trail_date),月(trail_date)
  • 没有特权规则阻止您提出具体的、非模糊的技术问题。特权适用于您被允许披露的有关您的客户的信息,并且此问题中的任何内容都不需要特定的客户详细信息。即使需要示例客户端名称(它们不是),它们也可以是通用的,例如 Bob SmithJane Doe 等. 实际上,您可以在不参考律师或客户或补救措施的情况下提出这个问题。不要声称有特权试图掩盖提出问题的低质量努力。

标签: sql-server


【解决方案1】:

假设您的案例历史跨越数年,而不仅仅是数月,试试这个:

 SELECT
,YEAR([trial_date]) AS [Year]
,MONTH([trial_date]) AS [Month]
,COUNT(1) AS [Trial_Count]
 FROM [MyLegalDB]
 WHERE [trial_date] between '20160101' and '20160531'
GROUP BY YEAR([trial_date]), MONTH([trial_date])

如果您想由律师将其分开,则需要将该列添加到 SELECT 列表以及 GROUP BY 子句中,如下所示:

 SELECT
 [attorney]
,YEAR([trial_date]) AS [Year]
,MONTH([trial_date]) AS [Month]
,COUNT(1) AS [Trial_Count]
 FROM [MyLegalDB]
 WHERE [trial_date] between '20160101' and '20160531'
GROUP BY [attorney], YEAR([trial_date]), MONTH([trial_date])

这是对一个非常笼统的问题的非常笼统的回答。如果您希望我更具体,我将不得不更好地了解您的目标。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    相关资源
    最近更新 更多