gpt4 book ai didi

sql - 如何正确 SELECT INTO @TempTable 多次返回单个结果集?

转载 作者:行者123 更新时间:2023-12-04 13:04:47 26 4
gpt4 key购买 nike

我正在尝试通过将多个查询组合到一个结果集中来为 Crystal Reports 编写一个存储过程(Crystal 不支持一个报告中的多个结果)。

我试图从两个表中获取组合列的结果集。

在 SP 中,我声明了 @temptable 和列(因为我查询的两个表具有不同的列)。

DECLARE @TEMPNEWBILLING TABLE
(
ACCOUNT DECIMAL null,
CLIENT NVARCHAR null,
TIMESTAMP INT null,
BILLING DECIMAL null,
CALLKIND INT null,
HITK1 DECIMAL null,
HITK2 DECIMAL null,
HIDISC DECIMAL null,
HITALK DECIMAL null,
HIPTCH DECIMAL null,
HICONF DECIMAL null,
HIHOLD DECIMAL null,
PTCH DECIMAL null,
SUPERTIME DECIMAL null
)

然后我 SELECT来自两个表 INTO临时表:
SELECT Account, Client, Timestamp, Billing, CallKind, HiTk1, HiTk2, HiDisc, HiTalk, HiPtch,     HiConf, HiHold, Ptch
INTO TEMPNEWBILLING
FROM
mCallEnd
WHERE billing = cast(@BILLINGNUMBER as decimal)
AND Timestamp > @STARTITIME
AND Timestamp < @ENDITIME
AND CallKind in (0,1,2,3,4,16)

SELECT
Billing, SuperTime
INTO TEMPNEWBILLING
FROM
mClientMaint
WHERE billing = cast(@BILLINGNUMBER as decimal)
AND Timestamp > @STARTITIME
AND Timestamp < @ENDITIME

最后,我只是从临时表中获取所有数据。
SELECT * FROM @TEMPNEWBILLING

不幸的是,出了点问题,因为当我运行 SP 时,我收到一个错误

There is already an object named 'TEMPNEWBILLING' in the database.



我已经检查过了,似乎第一个查询正在运行,但是在第二个 Select Into 处抛出错误。我一定是做错了,因为如果我使用 #tables 或 @tables(即 delcare 表与创建表),我会得到同样的错误。

用两个查询的结果填充临时表的前景根本不可能吗?我是否使用了错误的工具来完成这项工作?

最佳答案

SELECT... INTO 创建一个新表。

你会想要扭转它:

INSERT INTO @TEMPNEWBILLING 
(Columns...)
SELECT (your select query here)

您需要像之前一样声明表(从技术上讲,它是一个表变量,因为您使用了 @ 符号)。然后对所有插入使用 INSERT INTO... SELECT... 。

关于sql - 如何正确 SELECT INTO @TempTable 多次返回单个结果集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7152619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com