简体   繁体   English

SQL查询以获取每年的最小和最大日期日期范围

[英]SQL Query to get min and max date per year date ranges

Currently I have a query which is loading a per year sales of a given Tenant. 目前,我有一个查询正在加载给定租户的年销售额。 Using this code below, I am able to produce this result (see image table) 使用下面的代码,我可以产生此结果(请参见图像表)

SELECT DATENAME(month,date) [month]
    ,ISNULL(SUM(CASE WHEN YEAR (DATE) = @Year1 THEN gsc END), 0) AS 'Year1'
    ,ISNULL(SUM(CASE WHEN YEAR (DATE) = @Year2 THEN gsc END), 0) AS 'Year2'
    ,ISNULL(SUM(CASE WHEN YEAR (DATE) = @Year3 THEN gsc END), 0) AS 'Year3'
    ,ISNULL(SUM(CASE WHEN YEAR (DATE) = @Year4 THEN gsc END), 0) AS 'Year4'
    ,ISNULL(SUM(CASE WHEN YEAR (DATE) = @Year5 THEN gsc END), 0) AS 'Year5'
INTO #LRSalesAnalysis
FROM dailymod 
WHERE tenantcode = @RP 
GROUP BY DATENAME(month,date)
ORDER BY DATEPART(MM,DATENAME(month,date)+' 01 2011')

Part of the code, take note that parameters @Year1-5 have value like (2011,2012 etc) 代码的一部分,请注意,参数@ Year1-5具有类似(2011,2012等)的值

result 结果

在此处输入图片说明

What I want now is to get the minimum date and maximum date per year. 我现在想要的是获取每年的最小日期和最大日期。 RESULTING TO SOMETHING LIKE THIS 结果像这样

在此处输入图片说明

The source database is actually a collection of sales per date. 源数据库实际上是每个日期的销售额的集合。 So I want to get the max and min date found in the given date range (year) 所以我想在给定的日期范围(年)中找到最大和最小日期

Any help will be very much appreciated 任何帮助将不胜感激

This is the done with the same technique you are already using. 这是通过与您已经使用的相同技术完成的。 Only it's two queries, one for min , one for max , that you'd glue together with UNION ALL . 您只需将两个查询与UNION ALL粘合在一起,一个用于min ,一个用于max

SELECT 
  'Min Date' AS what
  ,MIN(CASE WHEN YEAR(DATE) = @Year1 THEN DATE END) AS 'Year1'
  ,MIN(CASE WHEN YEAR(DATE) = @Year2 THEN DATE END) AS 'Year2'
  ,MIN(CASE WHEN YEAR(DATE) = @Year3 THEN DATE END) AS 'Year3'
  ,MIN(CASE WHEN YEAR(DATE) = @Year4 THEN DATE END) AS 'Year4'
  ,MIN(CASE WHEN YEAR(DATE) = @Year5 THEN DATE END) AS 'Year5'
FROM dailymod 
WHERE tenantcode = @RP 
UNION ALL
SELECT
  'Max Date' AS what
  ,MAX(CASE WHEN YEAR(DATE) = @Year1 THEN DATE END) AS 'Year1'
  ,MAX(CASE WHEN YEAR(DATE) = @Year2 THEN DATE END) AS 'Year2'
  ,MAX(CASE WHEN YEAR(DATE) = @Year3 THEN DATE END) AS 'Year3'
  ,MAX(CASE WHEN YEAR(DATE) = @Year4 THEN DATE END) AS 'Year4'
  ,MAX(CASE WHEN YEAR(DATE) = @Year5 THEN DATE END) AS 'Year5'
FROM dailymod 
WHERE tenantcode = @RP;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM