Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在另一个表中循环并使用值作为SELECT查询的变量_Sql Server_Loops - Fatal编程技术网

Sql server 在另一个表中循环并使用值作为SELECT查询的变量

Sql server 在另一个表中循环并使用值作为SELECT查询的变量,sql-server,loops,Sql Server,Loops,延迟表中的样本数据如下所示: +----------+-------------+ | Customer | DaysDelayed | +----------+-------------+ | 698125 | 13 | | 698126 | 31 | | 698127 | 2 | | 698128 | 11 | | 698129 | 5 | | 698130 |

延迟表中的样本数据如下所示:

+----------+-------------+
| Customer | DaysDelayed |
+----------+-------------+
|   698125 |          13 |
|   698126 |          31 |
|   698127 |           2 |
|   698128 |          11 |
|   698129 |           5 |
|   698130 |           4 |
|   698131 |          42 |
|   698132 |          29 |
|   698133 |          29 |
+----------+-------------+
所需的输出为:

+------------+-------+
|   Range    | Count |
+------------+-------+
| 0-7 days   |     3 |
| 8-20 days  |     2 |
| 21-30 days |     2 |
| 31-45 days |     2 |
+------------+-------+
为了获得输出,我编写了4个查询:

SELECT '0-7 days', Count(*) 
FROM Delays 
WHERE DaysDelayed between 0 AND 7

SELECT '8-20 days', Count(*) 
FROM Delays 
WHERE DaysDelayed between 8 AND 20
依此类推(标签值和WHERE条件在每个查询中都会发生变化)

日范围会不时变化,范围的数量也会增加/减少

从可维护性的角度来看,我希望将范围值存储在一个表中,如下所示:

+---------+------------+----------+----------+
| RangeID | RangeName  | LowerEnd | UpperEnd |
+---------+------------+----------+----------+
|       1 | 0-7 days   |        0 |        7 |
|       2 | 8-20 days  |        8 |       20 |
|       3 | 21-30 days |       21 |       30 |
|       4 | 31-45 days |       31 |       45 |
+---------+------------+----------+----------+
并使用一个SELECT查询(而不是目前的4个查询)循环遍历该表


请帮助。

使用
UNION
操作员。它合并任意数量的给定表的行

以下是文件:

使用
联合
运算符。它合并任意数量的给定表的行

以下是文件:

您尝试过类似的方法吗

SELECT  RangeName,
        COUNT(d.Customer) Cnt
FROM    Ranges r LEFT JOIN
        Delays d    ON  d.DaysDelayed BETWEEN r.LowerEnd AND r.UpperEnd
GROUP BY RangeName

你试过类似的东西吗

SELECT  RangeName,
        COUNT(d.Customer) Cnt
FROM    Ranges r LEFT JOIN
        Delays d    ON  d.DaysDelayed BETWEEN r.LowerEnd AND r.UpperEnd
GROUP BY RangeName