在SQL Server 2008 R2我有一个名为的主表Employees,其中包含大约 20 个字段。我有第二个电子表格,其中包含除 5 之外的所有字段UpdateToEmployees,我需要合并这些字段,Employees但仅在值不相同的地方。
执行此操作的最有效方法是什么?我的思考过程(可能很长)是:
Select语句以获取值不相同的行exists,用是/否值标记一个字段exists包含 yes 值 - 运行更新查询exists包含值 - 运行插入查询使用下面的 DDL - 我如何加入 empID 并更新记录 where when matched= Yes 或 True(无论它返回的是什么)并插入当前不存在的记录Employees
Create Table Employees
(
empid varchar(50)
,empaddress varchar(500)
,phone varchar(12)
,emcontact1 varchar(500)
,emcontact2 varchar(500)
,active varchar(10)
,manager varchar(50)
,paygrade int
)
Insert Into Employees (empid,empaddress,phone,emcontact1, emcontact2, active, manager, paygrade) VALUES …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行动态 SQL 语句,它适用于任何storename没有撇号的语句。但是,当其中storename包含撇号时,语法不正确,但是在这种情况下我无法使用动态 SQL。
我应该如何修改此语法storename以包含 apastrophe?
这是 DDL
Declare @TestHyphens Table(StoreName varchar(500),topItemSale varchar(500))
Insert Into @TestHyphens (StoreName, topItemSale) Values
('Bob''s Burger''s','Pen'), ('Jacks Coffee Shop','Pencil')
,('Larry''s Hair Shack','Rainbow'), ('Manny''s Sandwich Shop','Sunglasses')
Declare @sql nvarchar(4000), @storename varchar(500)
Declare db_cursor CURSOR FOR
Select StoreName
FROM @TestHyphens
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @storename
While @@FETCH_STATUS = 0
BEGIN
Set @storename = REPLACE(@storename, '''', '''''''''');
SET @storename = CHAR(39)+CHAR(39)+@storename+CHAR(39)+CHAR(39);
SET @SQL = N'Select * from @TestHyphens where …Run Code Online (Sandbox Code Playgroud) 我需要一种方法来获得ek与每个相关联的唯一计数userid
我想要的输出是:
74123 3
Run Code Online (Sandbox Code Playgroud)
但我似乎无法准确获得 Distinct 计数的语法。我只能让它返回 TOTAL 计数,这不是我所追求的。
数据线
CREATE TABLE [dbo].[___________Purple](
[userid] [int] NULL,
[ek] [char](100) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
INSERT [dbo].[___________Purple] ([userid], [ek]) VALUES (71423, N'Black ')
GO
INSERT [dbo].[___________Purple] ([userid], [ek]) VALUES (71423, N'Black ')
GO
INSERT [dbo].[___________Purple] ([userid], [ek]) VALUES (71423, N'Black ')
GO
INSERT [dbo].[___________Purple] ([userid], [ek]) VALUES (71423, N'Black ')
GO
INSERT [dbo].[___________Purple] ([userid], [ek]) VALUES (71423, N'Black ')
GO
INSERT [dbo].[___________Purple] ([userid], [ek]) VALUES …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用左外连接从两个表中返回数据。MetaKnight 拥有最多的 storeNames,我希望所有这些都返回,当然还有来自 KnightNinja 的相应数据。我把下面的语法放在一起,但我的语法只返回两个表中符合条件的商店的名称。例如,应该返回 Store D 和 Store E,因为日期是 2017 年 1 月 - 但语法不会返回它。为什么?
这是示例垃圾 DDL 和查询
Create Table MetaKnight
(
storeName varchar(500) NOT NULL
,storeNumber varchar(100) NOT NULL Primary Key
,openDate date NOT NULL
)
Create NonClustered Index snIndex
On MetaKnight (storeName ASC)
Create Table KnightNinja
(
storeName varchar(500) NOT NULL
,ssID varchar(100) NOT NULL Primary Key
,c1 int not null Default(0)
,c2 int not null Default(0)
,c3 int not null Default(0)
,c4 int not null Default(0) …Run Code Online (Sandbox Code Playgroud) 我想执行以下查询,该查询基本上显示计算的位置 >= .70 或 <= -.70 但是,我收到错误
消息 147,级别 15,状态 1,第 8 行
聚合可能不会出现在 WHERE 子句中,除非它位于包含在 HAVING 子句或选择列表中的子查询中,并且被聚合的列是外部引用。
这是示例 DDL - 编写此查询的合适方法是什么?
Declare @Hamburger Table (empName varchar(200), e float, a float, saleid varchar(10))
Insert Into @Hamburger (empName, e,a, saleid) Values
('Jake', 362, 233, 'E111'), ('Jake', 1431, 2702, 'E112'), ('Blue', 849, 280, 'R222'), ('Blue', 1418, 299, 'R390')
Select empName, e, a, saleid, AmtGained = Sum(Coalesce(e,0))-Sum(Coalesce(a,0)),
DiscountPercent = Sum(Coalesce(e,0)-Coalesce(a,0))/NullIf(Sum(Coalesce(e,0)),0)
From @Hamburger
where ((Sum(Coalesce(e,0)-Coalesce(a,0))/NullIf(Sum(Coalesce(e,0)),0) >= .70)
OR (Sum(Coalesce(e,0)-Coalesce(a,0))/NullIf(Sum(Coalesce(e,0)),0) <= -.70))
Group By empName, …Run Code Online (Sandbox Code Playgroud) 我以为我已经确定了这个语法,但是当我尝试执行时,我收到了 Incorrect syntax near ) 的错误。为什么我的语法不正确?
;with CTE As
(
Select max(entryID) As "MaxEntryID"
,userID FROM loghist group by userID
)
Select es.userID As userID, cm.companyName, SUM(COALESCE(eq.TotalValue,0)) As TotalValue
FROM CTE vn
Inner Join loghist es
ON vn.userID=es.userID
AND Coalesce(vn."MaxEntryID",0)=COALESCE(es.entryID,0)
INNER JOIN company cm
ON es.customerid = cm.customerid
Inner Join loghistpart ep
ON ep.loghist = es.loghistid
Inner Join lhq eq
On eq.loghistpartid = ep.loghistpartid
GROUP BY es.userID, cm.companyName
)
UPDATE fvi
Set TotalValue = loghistdTotalValue
FROM FullVarianceInfo fvi
INNER JOIN …Run Code Online (Sandbox Code Playgroud)