sql - 选择语句阻塞另一个选择语句
问题描述
我不太确定这里发生了什么。我有一个警报,如果@StoreOrderID >1
.
它是这样的:
declare @message varchar(1000)
@StoreID --(retrieves info from StoreOrders tables)
BEGIN
select @message = 'store' + storename
from StoreOrders as so
join Distributors as ds
on ds.DistributorID = so.StoreOrderID
where ds.SDistributorID = @StoreID
select @message = brandID
from StoreOrders a
join Brandtitles as b
on b.branddistributorID = a.StoreOrderID
where b.brandNum = @DistributorNum and b.branddistributorID = @StoreID
select @message = 'date' + ISNULL(convert(varchar, @Date),'')
select @message = 'cost' + ISNULL(Convert(varchar,@Cost),'')
同样由于某种原因,如果我尝试将字符串连接到“品牌”选择它会引发错误。我可以为“店名”做这件事。我认为这可能与它有关。
如果我注释掉商店名称select
,它将发送警报brandID
,如果我注释掉另一个,它会发送另一个。但是,如果我同时离开它们,它只会显示其中一个。我在这里做错了什么?
解决方案
正如评论中提到的用户, @message
每次为它分配一个新值时,您都会覆盖该变量,而不是连接任何值。一个更简单和更清洁的方法是......
declare @message varchar(1000)
@StoreID [DataType]--(retrieves info from StoreOrders tables)
BEGIN
Declare @storename VARCHAR(100)
, @brandID VARCHAR(100)
, @Date VARCHAR(100)
, @Cost VARCHAR(100);
select @storename = 'store' + ISNULL(storename , 'Unknown')
from StoreOrders as so
join Distributors as ds
on ds.DistributorID = so.StoreOrderID
where ds.SDistributorID = @StoreID;
select @brandID = ISNULL(CAST( brandID AS VARCHAR(100) , 'Unknown')
from StoreOrders a
join Brandtitles as b
on b.branddistributorID = a.StoreOrderID
where b.brandNum = @DistributorNum
and b.branddistributorID = @StoreID;
select @Date = 'date' + ISNULL(convert(varchar, @Date),'');
select @Cost = 'cost' + ISNULL(Convert(varchar,@Cost),'');
SET @message = @storename + @brandID + @Date + @Cost;
推荐阅读
- c# - 带有 UDP 的 net.core 的 log4net 配置文件动态附加远程端口
- database - 使用 powerbi 在单个 dateTime 过滤器上过滤多个表
- crystal-reports - 隐藏 Crystal Reports 特定详细信息
- android-studio - Android Studio 不记录 Robo 测试
- google-apps-script - 从 if 语句调用 Google Script 函数
- php - PHP:关联数组中的下一个值
- perl - 使用perl删除特定位置的列
- python - 'numpy.float64' 不能解释为整数
- python - 如何使用 python 加载 Hive 表?
- html - 代码检查器告诉我我的工作是错误的,但我确信它是正确的