如何根据查询参数日期及其对应的工作日在 SQL 中创建报告

How to create report in SQL based on query parameter date and its corresponding weekday

我的SQLtable如下

用户每天都在更新数据,并且 report_date 会随着任何用户更新数据而更改。现在我需要根据日期作为参数从上面的 table 生成一个报告。例如,如果查询参数 (Report_date) 为 1-Feb-20,则报告应为 Rly, Sum of Trains on weekday corresponding to the query date (火车总和 Sch_SAT is Y as Saturday is weekday for 1-Feb-20), Sum of trains (where Report_date is equal to query date and Sch_SAT is Y), Sum of Trains where Sch_SAT is Y and Report_date is not equal to query date.所需的报告如下:

是否可以生成上述报告?如果可以,请帮忙。

感谢您在本论坛上以 table 形式提出问题的宝贵提示。我会在以后的问题中牢记。我通过拆分和重新加入 table 获得了预期的结果。我的 SQL 查询(存储过程)是

USE [Loco_bank]
GO
 /****** Object:  StoredProcedure [dbo].[HOG_summary]    Script Date: 02/13/2020 10:19:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE  [dbo].[HOG_summary] @Sunday varchar(1), @Monday varchar(1), @Tuesday varchar(1), @Wednesday varchar(1), @Thursday varchar(1), @Friday varchar(1), @Saturday varchar(1), @dt DATETIME AS

Begin

SELECT  Zrly as Master_Zrly, COUNT(Train) as Trains_sch INTO #tab1 FROM Hotel_load WHERE ([Saturday] = @Saturday OR @Saturday IS NULL) AND ([Sunday] = @Sunday OR @Sunday IS NULL) AND ([Monday] = @Monday OR @Monday IS NULL) AND ([Tuesday] = @Tuesday OR @Tuesday IS NULL) AND ([Wednesday] = @Wednesday OR @Wednesday IS NULL) AND ([Thursday] = @Thursday OR @Thursday IS NULL) AND ([Friday] = @Friday OR @Friday IS NULL) 
GROUP BY Zrly 

  SELECT  Zrly, COUNT(updated_on) as Reported, COUNT(HOG_loco_type_master) as HOG_Run, (COUNT(updated_on) - COUNT(HOG_loco_type_master)) as NONHOG_Run  INTO #tab2 FROM Hotel_load WHERE ([Saturday] = @Saturday OR @Saturday IS NULL) AND ([Sunday] = @Sunday OR @Sunday IS NULL) AND ([Monday] = @Monday OR @Monday IS NULL) AND ([Tuesday] = @Tuesday OR @Tuesday IS NULL) AND ([Wednesday] = @Wednesday OR @Wednesday IS NULL) AND ([Thursday] = @Thursday OR @Thursday IS NULL) AND ([Friday] = @Friday OR @Friday IS NULL) AND updated_on = @dt GROUP BY Zrly 

SELECT #tab1.Master_Zrly, #tab1.Trains_sch, #tab2.Zrly, #tab2.Reported, #tab2.HOG_Run, #tab2.NONHOG_Run FROM #tab1
LEFT JOIN #tab2 ON #tab1.Master_Zrly = #tab2.Zrly

End

我的查询字符串是:

 http://127.0.0.1/HOG/HOG_Report_BD.aspx?Wednesday=Y&dt=12-Feb-2020

输出为

| Master_Zrly | Trains_sch | Reported | HOG_Run | NONHOG_Run |
|-------------|------------|----------|---------|------------|
| SCR         | 25         | 9        | 18      | 2          |
| NCR         | 9          | 2        | 5       | 4          |
| SWR         | 13         | 4        |         |            |
| ER          | 28         | 7        | 22      | 1          |
| WCR         | 13         | 6        | 7       | 5          |
| CR          | 40         | 18       | 21      | 10         |
| KR          | 1          | 1        |         |            |
| NWR         | 17         | 16       |         |            |
| ECoR        | 11         | 2        |         |            |
| NR          | 99         | 30       | 62      | 6          |