私はSQL TABLE Aによって生成された次のテーブルを持っています
timeinterval count(exclusive range)
0-6 2
0-12 5
0-18 10
このテーブル B のようなテーブルが欲しい
timeinterval count(exclusive range) count(inclusive range)
1-6 2 2
1-12 5 3
1-18 10 5
私はすでにテーブル A を生成しており、テーブル B が必要です。テーブル A のコードにクエリを追加し、テーブルの 2 行目に対して (0-12)-(0-6) のようなことを SQL で行うことはできますか? B.
テーブルAを生成するために使用されるコードは
with ranges as
(
select 6 as val, 1 as count_all
union all
select 12, 1
union all
select 18, 1
union all
select 24, 1
union all
select 30, 1
union all
select 36, 1
union all
select 42, 1
union all
select 48, 1
union all
select 1, 0
)
select case when ranges.count_all = 0
then 'more'
else convert (varchar(10), ranges.val)
end [MetLifeExperienceMonths],
sum (case when (ranges.count_all = 0 and GoldListHistogram.MetLifeExperienceMonths>=1)
or
(GoldListHistogram.MetLifeExperienceMonths<= ranges.val and GoldListHistogram.MetLifeExperienceMonths>=1)
then 1 end) [count],
count(EmployeeID) as 'Total'
into yy
from GoldListHistogram
cross join ranges
where MetLifeExperienceMonths > 0
group by ranges.val, ranges.count_all
2行目から始まるすべての行の「カウント(排他的範囲)」の最初の2行の値を減算できるように、クエリを変更する必要があります..0-12(時間間隔)行のように、値を出力する必要があります行(i)=カウント(i)-カウント(i-1)のように、最初の2行の差です。
最初の列は 5 年 (月単位) の時間間隔を示し、2 番目の列は no を計算します。(0-6,0-12,0-18)..6 ,12,18 のような排他的範囲内の従業員の数はありません。月の 3 番目の列は no を計算します。(0-6,6-12,12-18) のような排他的範囲の従業員の数