我有这个 2 个查询
select CONVERT(date, en_cours.date),COUNT(*) encours from en_cours group by CONVERT(date, en_cours.date) order by CONVERT(date, en_cours.date) asc
select CONVERT(date, clos.date),COUNT(*) clos from clos group by CONVERT(date, clos.date) order by CONVERT(date, clos.date) asc
第一个返回:
B|1
C|1
F|20
第二个:
A|4
B|8
C|7
D|1
E|9
F|10
我正在尝试融合这个 2 查询并使其像:
A|4|NULL
B|8|1
C|7|1
D|1|NULL
E|9|NULL
F|10|20
但是当我这样做时,它被赋予了不同的值
select CONVERT(date, clos.date),COUNT(clos.ticket_cp),COUNT(en_cours.ticket_cp)from clos left join en_cours on CONVERT(date, clos.date) = CONVERT(date, en_cours.date) group by CONVERT(date, clos.date) order by CONVERT(date, clos.date) asc
将每个查询包装在 CTE 中并联接它们:
with
cte1 as (
select CONVERT(date, en_cours.date) date1, COUNT(*) encours
from en_cours
group by CONVERT(date, en_cours.date)
)
cte2 as (
select CONVERT(date, clos.date) date2, COUNT(*) clos
from clos
group by CONVERT(date, clos.date)
)
select c1.date1, c1.encours, c2.clos
from cte1 c1 left join cte2 c2
on c2.date2 = c1.date1
order by c1.date1 asc
如果第二个查询可能包含第一个查询中不存在的日期,请将LEFT JOIN
更改为FULL OUTER JOIN
。
使用直接数据库调用的方案有点脆弱,因为如果您有任何数据库更改,则必须等待存储中的发布时间才能更改查询。 但对于您的方案,请尝试包含 System.Data 以与 sql 命令集成。