结合3个从同一表中选择陈述到SQL中的1个表

发布于 2025-02-03 06:43:04 字数 1469 浏览 3 评论 0原文

我正在尝试运行3个不同的在1个表上选择查询,我返回创建的计数,完成未决基于 create_date modified_date 的任务 我可以在上区分 等待 modified_date中基于字段状态

分别运行每个查询时返回正确的答案。

但是我想要的是将这3个查询组合在一个表中,如下所示:

+---------------------- +------------------+---------------------+
|  Total_created_files  | Total_done_files | Total_pending_files |
+-----------------------+------------------+---------------------+
|          14           |         40       |         9           | 
+-----------------------+------------------+---------------------+          

代码:

select 
count([create_date]) as Total_created_files
FROM [TEC_APP].[dbo].[case_to_do]
where  [create_date] >='2022-05-01 00:00:00.000'
AND
CAST([create_date] AS date) <=  CAST(GETDATE() AS date)

select 
count([modified_date]) as Total_done_files
FROM [TEC_APP].[dbo].[case_to_do]
where  [modified_date] >='2022-05-01 00:00:00.000'
AND
CAST([modified_date] AS date) <=  CAST(GETDATE() AS date)
AND
status = 'DONE'

select 
count([modified_date]) as Total_pending_files
FROM [TEC_APP].[dbo].[case_to_do]
where  [modified_date] >='2022-05-01 00:00:00.000'
AND
CAST([modified_date] AS date) <=  CAST(GETDATE() AS date)
AND
status = 'Pending'                                                  

I am trying to run 3 different select query on 1 table where i return the count of created, done, pending tasks based on created_date and modified_date
where i can differentiate the done from pending in modified_date based on the field status

when i run each query separately it return correct answer.

But what i want is to combine these 3 queries in one table as below:

+---------------------- +------------------+---------------------+
|  Total_created_files  | Total_done_files | Total_pending_files |
+-----------------------+------------------+---------------------+
|          14           |         40       |         9           | 
+-----------------------+------------------+---------------------+          

code:

select 
count([create_date]) as Total_created_files
FROM [TEC_APP].[dbo].[case_to_do]
where  [create_date] >='2022-05-01 00:00:00.000'
AND
CAST([create_date] AS date) <=  CAST(GETDATE() AS date)

select 
count([modified_date]) as Total_done_files
FROM [TEC_APP].[dbo].[case_to_do]
where  [modified_date] >='2022-05-01 00:00:00.000'
AND
CAST([modified_date] AS date) <=  CAST(GETDATE() AS date)
AND
status = 'DONE'

select 
count([modified_date]) as Total_pending_files
FROM [TEC_APP].[dbo].[case_to_do]
where  [modified_date] >='2022-05-01 00:00:00.000'
AND
CAST([modified_date] AS date) <=  CAST(GETDATE() AS date)
AND
status = 'Pending'                                                  

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小嗷兮 2025-02-10 06:43:04

根据需要,将条件聚合使用计数。我在这里做了几个假设,但这应该是您所追求的:

USE TEC_APP;
GO

SELECT COUNT(CASE WHEN [create_date] < DATEADD(DAY,1,CONVERT(date,GETDATE())) THEN 1 END) AS Total_created_files,
       COUNT(CASE WHEN [modified_date] >= '20220501' AND [modified_date] < DATEADD(DAY,1,CONVERT(date,GETDATE())) AND Status = 'DONE' THEN 1 END) AS Total_done_files,
       COUNT(CASE WHEN [modified_date] >= '20220501' AND [modified_date] < DATEADD(DAY,1,CONVERT(date,GETDATE())) AND Status = 'Pending' THEN 1 END) AS Total_pending_files
FROM [dbo].[case_to_do]
WHERE create_date >= '20220501'; --Presumably something can't be modified before it's created.

Use conditional aggregation to COUNT as needed. I make a couple of assumptions here, but this should be what you are after:

USE TEC_APP;
GO

SELECT COUNT(CASE WHEN [create_date] < DATEADD(DAY,1,CONVERT(date,GETDATE())) THEN 1 END) AS Total_created_files,
       COUNT(CASE WHEN [modified_date] >= '20220501' AND [modified_date] < DATEADD(DAY,1,CONVERT(date,GETDATE())) AND Status = 'DONE' THEN 1 END) AS Total_done_files,
       COUNT(CASE WHEN [modified_date] >= '20220501' AND [modified_date] < DATEADD(DAY,1,CONVERT(date,GETDATE())) AND Status = 'Pending' THEN 1 END) AS Total_pending_files
FROM [dbo].[case_to_do]
WHERE create_date >= '20220501'; --Presumably something can't be modified before it's created.
最美不过初阳 2025-02-10 06:43:04

将条件聚合与案例表达式

SELECT SUM(case when <First Condition here> then 1 else 0 end) as Total_created_files,
       SUM(case when <Second Condition here> then 1 else 0 end) as Total_done_files,
       SUM(case when <Third Condition here> then 1 else 0 end) as Total_pending_files
FROM [TEC_APP].[dbo].[case_to_do]

Use conditional aggregation with case expression:

SELECT SUM(case when <First Condition here> then 1 else 0 end) as Total_created_files,
       SUM(case when <Second Condition here> then 1 else 0 end) as Total_done_files,
       SUM(case when <Third Condition here> then 1 else 0 end) as Total_pending_files
FROM [TEC_APP].[dbo].[case_to_do]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文