我需要一种方法来比较两varchar
列的内容,命名fistname
和lastname
相应,如果内容存在于 中firstname
,则将其从lastname
. 理想情况下,我想在没有更新查询的情况下执行此操作,但如果这是实现它的唯一方法,那么我可以走那条路。
这是示例 DDL 和 DML:
Declare @BadData Table
(
firstname varchar(500)
,lastname varchar(500)
)
Insert Into @BadData (firstname, lastname) Values
('Bridget Jones', 'Jones, III'), ('Butch', 'Jones'), ('Key West', 'West')
,('Bob Marly', 'Junior')
Select * From @BadData
Run Code Online (Sandbox Code Playgroud)
这给出了以下结果集:
firstname lastname
------------- ----------
Bridget Jones Jones, III
Butch Jones
Key West West
Bob Marly Junior
Run Code Online (Sandbox Code Playgroud)
我想要的结果集是:
firstname lastname
------------- --------
Bridget Jones , III
Butch Jones
Key West
Bob Marly …
Run Code Online (Sandbox Code Playgroud) 我的左表比右表包含更多的商店名称。我以为快速左连接会返回该数据集,但无济于事!
Data In From 子句有最多的选项,我想显示所有这些 Data In Left Join 子句有一些但不是我想显示的所有选项
我创建了 CTE 来获取 SUM() 并将数据拉到主查询中存在于左连接表中
这是我使用的查询,它没有给出我想要的结果。
;With DataFromOne As
(
Select StoreName
,DataFromOne = Count(ramalad)
FROM DataFromOne
WHERE EntryDate BETWEEN '20170101' AND '20170331'
GROUP BY StoreName
)
Select ec.StoreName
,[Emp Count] = COUNT(Employee)
,[PT Count] = COALESCE(ec.DataFromOne,0)
FROM DataFromOne ec
LEFT OUTER JOIN DataFromTwo fji
ON ec.StoreName = fji.StoreName
WHERE fji.saleDate BETWEEN '20170101' AND '20170331'
GROUP BY ec.StoreName, ec.DataFromOne
ORDER BY ec.StoreName ASC;
Run Code Online (Sandbox Code Playgroud) 我正在尝试更新刚刚从ALter
语句中添加的字段。我收到以下错误:
消息 207,级别 16,状态 1,过程 TestProc,第 436 行
无效的列名称“discountamount”。
这是我尝试使用的语法 - 更新刚刚添加到存储过程中的字段的正确方法是什么?
ALTER TABLE [dbo].msnbc
ADD saleamount float,
discountamount float;
UPDATE ftri
SET ftri.discountamount = fji.Totaldiscountamount
FROM [dbo].msnbc ftri
INNER JOIN [dbo].halfbaked fji
ON ftri.saleid = fji.saleid
Run Code Online (Sandbox Code Playgroud)