我有一个接受参数@EndDate as DateTime
的SQL语句。我希望能够逐个传递@EndDate
的多个值,然后Union
传递所有查询的结果。我尝试过使用CTE,但没有用。我想为@EndDate
传递几个日期。任何帮助将不胜感激。
我的查询是:
DECLARE @EndDate as DateTime
SET @EndDate = '2018/02/25'
SELECT
CONVERT(VARCHAR, @EndDate, 101) [R_Date]
,[Name]
[Type]
FROM [dbo].[S_Table]
答案 0 :(得分:0)
这是Sample查询如何循环遍历多个日期。 while循环应该将所有行选择到一个表中,不需要执行union all
DECLARE @table TABLE (
day INT
,Month INT
,DATE DATE
)
DECLARE @startdate DATE = '2018/02/25'
DECLARE @enddate DATE = cast(getdate() AS DATE)
WHILE @startdate <= @enddate
BEGIN
SELECT @startdate = dateadd(dd, 1, @startdate)
INSERT @table (
day
,Month
,DATE
)
SELECT day(@startdate)
,MONTH(@startdate)
,@startdate
END
SELECT *
FROM @table;
在将多个值传递给查询的逻辑中,您可以将结果集存储到临时表中,该表包含循环记录
DECLARE @table TABLE (
[R_Date] DATE
,Name VARCHAR(155)
,Value VARCHAR(155)
)
DECLARE @enddate DATE = '2018/02/25'
DECLARE @enddate1 DATE = cast(getdate() AS DATE)
WHILE @enddate <= @enddate1
BEGIN
SELECT @enddate = dateadd(dd, 1, @enddate)
INSERT @table (
R_Date
,Name
,Value
)
SELECT CONVERT(VARCHAR, @EndDate, 101) [R_Date]
,[Name] [Type]
FROM [dbo].[S_Table]
WHERE DATE = @enddate
-------More filters
END
SELECT *
FROM @table;