SQL 计算每个 NPANXX 系列的语句
SQL statement to count each individual NPANXX series
我正在编写一个查询,其中一个字段是 DIAL_NUMBER。
在该字段中,有些值是 11 位数字,有些是 10 位数字。如果是 11 位数字,我需要第 2 到第 7 个字符,如果是 10 位数字,我需要第 1 到第 6 个字符。
然后我需要计算每个单独的系列。我尝试使用以下方法,但出现错误。
请帮助我确定解决方案。
select dialled number, case
when length(Dialled_Number) = '11' then Substr(Dialled_Number, 2, 7)
else Substr(Dialled_Number, 1, 6)
end
count(*)
from Error_Event
在不知道您的预期结果的情况下,我想您需要在查询中使用 group by
。
也许是这样的:
select case
when length(Dialled_Number) = 11 then Substr(Dialled_Number, 2, 7)
else Substr(Dialled_Number, 1, 6)
end,
count(*)
from Error_Event
group by case
when length(Dialled_Number) = 11 then Substr(Dialled_Number, 2, 7)
else Substr(Dialled_Number, 1, 6)
end
如果是 MS SQL,您可以使用 ROW_NUMBER()
和 COUNT
函数来获得所需的输出。
DECLARE @TABLE TABLE(DIAL_NUMBER VARCHAR(20))
INSERT INTO @TABLE
SELECT '81243193812' UNION
SELECT '1829321874' UNION
SELECT '182932'
SELECT NPANXX, [Count] FROM
(
SELECT NPANXX,
COUNT(NPANXX) OVER (PARTITION BY NPANXX) AS [Count], DIAL_NUMBER,
ROW_NUMBER() OVER (PARTITION BY NPANXX ORDER BY DIAL_NUMBER) RN
FROM
(
SELECT DIAL_NUMBER,
CASE
WHEN LEN(DIAL_NUMBER) = 11 THEN SUBSTRING(DIAL_NUMBER,2, 7)
ELSE SUBSTRING(DIAL_NUMBER,1, 6)
END AS NPANXX
FROM @table
) Tmp
)FTMp
WHERE RN = 1
我正在编写一个查询,其中一个字段是 DIAL_NUMBER。 在该字段中,有些值是 11 位数字,有些是 10 位数字。如果是 11 位数字,我需要第 2 到第 7 个字符,如果是 10 位数字,我需要第 1 到第 6 个字符。 然后我需要计算每个单独的系列。我尝试使用以下方法,但出现错误。 请帮助我确定解决方案。
select dialled number, case
when length(Dialled_Number) = '11' then Substr(Dialled_Number, 2, 7)
else Substr(Dialled_Number, 1, 6)
end
count(*)
from Error_Event
在不知道您的预期结果的情况下,我想您需要在查询中使用 group by
。
也许是这样的:
select case
when length(Dialled_Number) = 11 then Substr(Dialled_Number, 2, 7)
else Substr(Dialled_Number, 1, 6)
end,
count(*)
from Error_Event
group by case
when length(Dialled_Number) = 11 then Substr(Dialled_Number, 2, 7)
else Substr(Dialled_Number, 1, 6)
end
如果是 MS SQL,您可以使用 ROW_NUMBER()
和 COUNT
函数来获得所需的输出。
DECLARE @TABLE TABLE(DIAL_NUMBER VARCHAR(20))
INSERT INTO @TABLE
SELECT '81243193812' UNION
SELECT '1829321874' UNION
SELECT '182932'
SELECT NPANXX, [Count] FROM
(
SELECT NPANXX,
COUNT(NPANXX) OVER (PARTITION BY NPANXX) AS [Count], DIAL_NUMBER,
ROW_NUMBER() OVER (PARTITION BY NPANXX ORDER BY DIAL_NUMBER) RN
FROM
(
SELECT DIAL_NUMBER,
CASE
WHEN LEN(DIAL_NUMBER) = 11 THEN SUBSTRING(DIAL_NUMBER,2, 7)
ELSE SUBSTRING(DIAL_NUMBER,1, 6)
END AS NPANXX
FROM @table
) Tmp
)FTMp
WHERE RN = 1