我必须将我希望合并到一个查询中的选择查询分开。意思是我喜欢我的输出格式为:
col 1 | COL2
252 ---- 05
一个想法是编写一个CTE,虽然这两个是小查询,但我还有大约4个这样的日期范围我认为避免使用一个或多个CTES来获取数据。
以下是我的选择查询:
SELECT
count(*) as pastDueRepl
FROM TBLPTS_APPDATA
WHERE APPV_PTSSTATUS = '2'
AND (APPD_NEXTREPLDATE IS NOT NULL)
AND APPD_NEXTREPLDATE between DATEADD(Day,-30,GETDATE()) and GETDATE()
SELECT
count(*) as pastDueInsp
FROM TBLPTS_APPDATA
WHERE APPV_PTSSTATUS = '2'
AND (APPD_NEXTINSPDATE IS NOT NULL)
AND APPD_NEXTINSPDATE between DATEADD(Day,-30,GETDATE()) and GETDATE()
答案 0 :(得分:1)
为每个查询添加cellForRowAtIndexPath
列,然后0
添加sum
列:
union
答案 1 :(得分:0)
这应该让你开始:
select case when APPD_NEXTREPLDATE is not null and APPD_NEXTINSPDATE is null then 'a'
when APPD_NEXTREPLDATE is null and APPD_NEXTINSPDATE is not null then 'b'
when APPD_NEXTREPLDATE is not null and APPD_NEXTINSPDATE is not null then 'c'
else 'd' end status
, count(*) records
from etc
where etc
group by case when APPD_NEXTREPLDATE is not null and APPD_NEXTINSPDATE is null then 'a'
when APPD_NEXTREPLDATE is null and APPD_NEXTINSPDATE is not null then 'b'
when APPD_NEXTREPLDATE is not null and APPD_NEXTINSPDATE is not null then 'c'
else 'd' end
详细信息取决于您的要求。
答案 2 :(得分:0)
我会使用条件聚合并使用聚合函数内部的不同条件,因此对于匹配条件1的每一行都会添加到总和(用作计数):
SELECT
SUM(
CASE
WHEN APPD_NEXTINSPDATE between DATEADD(Day,-30,GETDATE()) and GETDATE()
THEN 1
ELSE 0
END
) AS pastDueInsp,
SUM(
CASE
WHEN APPD_NEXTREPLDATE between DATEADD(Day,-30,GETDATE()) and GETDATE()
THEN 1
ELSE 0
END
) AS pastDueRepl
FROM TBLPTS_APPDATA
WHERE APPV_PTSSTATUS = '2';
或者您可以使用union all
运算符来合并语句,或者将每个语句用作派生表或cte。这么多选择。
答案 3 :(得分:0)
这可以是最小化重复次数并减少硬编码日期范围边界的次数的好方法:
with DateRangeBoundaries as (select DATEADD(Day,-30,GETDATE()) as LowerBoundDate,
GETDATE() as UpperBoundDate)
select count(case when t.APPD_NEXTREPLDATE between drb.LowerBoundDate and drb.UpperBoundDate
then 'X' end) as pastDueRepl,
count(case when t.APPD_NEXTINSPDATE between drb.LowerBoundDate and drb.UpperBoundDate
then 'X' end) as pastDueInsp
from TBLPTS_APPDATA t
join DateRangeBoundaries drb on 1=1
where t.APPV_PTSSTATUS = '2'
以上可能会为您提供更紧凑的语法。但是,如果您依赖于日期列上的索引,那么上述内容实际上可能会损害您的性能。如果您决定尝试,请确保对此进行分析。