我需要从两列中选择值,但是在单独的行中,因此我首先尝试将它们插入到表变量中。
这两个插入语句可以正常工作。
idx
然而这无法解析
DECLARE @name TINYINT;SET @name = 21;
DECLARE @time DATETIME;SET @time = '2013-09-29';--30T00:15:00.000';
DECLARE @offset INT;SET @offset = 1;
DECLARE @fetch INT;SET @fetch = 3;
DECLARE @temp_c TABLE ([close] REAL);
INSERT INTO @temp_c
SELECT [Close]
FROM [dataSQL].[dbo].[temperatures]
WHERE [Time]<@time AND [cityID]=@name
ORDER BY [Time] DESC
OFFSET 0 ROWS -- has no offset
FETCH NEXT (@fetch) ROWS ONLY
SELECT * FROM @temp_c;
DECLARE @temp_h TABLE ([high] REAL);
INSERT INTO @temp_h
SELECT [High]
FROM [dataSQL].[dbo].[temperatures]
WHERE [Time]<@time AND [cityID]=@name
ORDER BY [Time] DESC
OFFSET (@offset) ROWS. -- has an offset
FETCH NEXT (@fetch) ROWS ONLY
SELECT * FROM @temp_h;
为什么呢?当我修改它并添加更多select语句时,我遇到了错误'子查询返回了多个结果'即使插入也不接受。
答案 0 :(得分:0)
您的SQL无效。试试这个:
INSERT INTO @temp
SELECT
(SELECT [Close]
FROM [dataSQL].[dbo].[temperatures]
WHERE [Time]<@time AND [cityID]=@name
ORDER BY [Time] DESC
OFFSET 0 ROWS
FETCH NEXT (@fetch) ROWS ONLY),
(SELECT [High]
FROM [dataSQL].[dbo].[temperatures]
WHERE [Time]<@time AND [cityID]=@name
ORDER BY [Time] DESC
OFFSET (@offset) ROWS
FETCH NEXT (@fetch) ROWS ONLY)
答案 1 :(得分:0)
以下内容肯定会解析并运行,但最终结果可能不是您想要的。
DECLARE @temp TABLE ([close] REAL, [high] REAL);
INSERT INTO @temp ([close], [high])
SELECT [Close], [High]
FROM [dataSQL].[dbo].[temperatures]
WHERE [Time]<@time AND [cityID]=@name
ORDER BY [Time] DESC
OFFSET (@offset) ROWS
FETCH NEXT (@fetch) ROWS ONLY;
上面的查询会从表格的同一行中选择[Close]
和[High]
值。
如果您需要以某种方式组合来自不同行的值,请编辑问题并向我们解释所需的逻辑。