这两个示例之间是否存在性能上的差异:
WITH CTE1
AS (
SELECT
Col1,
Col2,
Col3
FROM dbo.Table1
WHERE Col3 = '1'
)
select * from CTE1
WITH CTE1
AS (
SELECT
Col1,
Col2,
Col3
FROM dbo.Table1
)
select * from
SQL Server 2012。 有一个包含sql语句的表,由开发人员维护。 CREATE TABLE t
(
id INT PRIMARY KEY CLUSTERED NOT NULL IDENTITY(1, 1)
, sql_statement NVARCHAR(MAX) NOT NULL
, recipient NVARCHAR(MAX) NOT NULL
);
INSERT INTO t
SELECT 'select 1 as one, 2 as two, 3 as three'
, 'some-email-address@host
我必须获得所有Server登录(SQL 2005+)及其服务器角色的输出,但是对于每次登录,我都需要一行列出的角色,例如:
HOSTNAME USERNAME DESC ROLES
server sa SQL_LOGIN sysadmin
server john SQL_LOGIN dbcreator,securityadmin
server DOMAIN\jack WINDOWS_LOGIN diskadmin,setupadmin,dbcreator
我希望在sql server中重新排列下一个子行的父行,如下所示
Rownum name parentid
--------------------
1 sathish null
2 kumar null
3 sk 1
4 sk 1
5 sk 2
现在我想像下面这样重新排列
Rownum name parentid
--------------------
1 sathish null
3 sk 1
4 sk 1
2 kumar nu
我正在使用Server。我已经创建了超过20000行的SQL表。我使用以下查询筛选复制。
SELECT
Entity,ExpenseType,Amount,Description,APSupplierID,ExpenseReportID,Employee,ExpenseDate,COUNT(*)
FROM
TotalsByGLCenter
GROUP BY
Entity,ExpenseType,Amount,Description,APSupplierID,ExpenseReportID,Employee,ExpenseDate
HAVING
COUNT(*)
当我在SQL Server中上载我的表项目时,我看到使用Microsoft SQL Server Management Studio的行出现重复,如下面的示例:
ID Status Code
----------------------------------
144702 Completed Ok-Q8 AB
144702 Completed Ok-Q8 AB
我试着运行delete命令,但是我不能让它工作。我的目标是扫描所有的表ID,看看是否有一行具有相同的ID,然后删除其中一行,这样,最终将只有1行具有该ID
delete from
可以使用自引用的CTE和union all在Server中模拟一个循环,如下所示:
declare @a int = 1;
declare @b int = 5;
;with Tbl as (
select @a a
UNION ALL
select (a + 1) a
from Tbl
where (a + 1) < @b
)
select * from Tbl
当您要创建从开始日期到结束日期的日期列表,然后在这些特定日期上加入时,这是非常有用的。
我也可以想象,想要在列中也这样做。在不使用动态SQL的情况下,是否有在Server中实现这一目标
我在尝试创建存储过程时遇到了一点问题。我正在使用Microsoft SQL Server Management Studio 2017和T-SQL。我有两张桌子,eTasks和eStaff。以下是每个表的列:
eStaff
StaffID | Name
eTasks
TaskID | StaffID | Title | CreateDate
目前,根据数据,所有任务都分配给StaffID '1‘。eTasks和eStaff表都会使用新的任务和人员进行更新,或者它们会被删除,这些表每天都不会有完全相同的行。有时候,eTask表中会有1000行,下一天可能只有400行。有时,eStaff表
我需要一些SQL Server方面的帮助
我有许多表格行,如下所示。
ID Name status
1 viral/AHD Yes
2 viral/AHD No
3 joe/US Yes
4 thomas/IND Yes
5 jack/IND No
现在我想选择那些在Name列中不同的行,即第3、4、5行,以及那些在Name中重复但status为Yes的行。
所以我的最终答案是:
ID Name Status
1 viral/AHD
我有一个SQL Server 2019表,该表具有特定年份的行:
with data (year_, amount) as (
select 2024, 100 union all
select 2025, 200 union all
select 2025, 300 union all
select 2026, 400 union all
select 2027, 500 union all
select 2028, 600 union all
select 2028, 700 union all
select 2028, 800 union all
select 2029, 900 uni
在将data从excel文件插入到sql server后,我得到了这个错误。根据excel上的数据,SSMS自动创建表,并为所有字段生成7行null值。
错误是,
更新或删除的行值要么不使行唯一,要么更改多行(7行)。
这很有趣,因为当我在stackoverflow中搜索时,我得到了这个,它对我没有帮助,因为我的表中只有7行要删除的null值。
我在T-sql下面使用,但是它不影响行,
Delete top(1) from [tableName] where [columnName]= NULL
Delete top(1) from [tableName] where [column
在上图中,您将注意到前6行,其中显示了每个StudentID对应的2条记录。我需要为每组StudentID更新第二条记录的EndDate列值,该值比同一StudentID的第一条记录的StatusEffectiveDate小一天。我正在使用SQL Server 2014。
因此,第一条记录应如下所示:
下面是我的SQL代码:
SELECT *
FROM #TEMP_99RecordsNeedingEndDateUpdated
ORDER BY StudentID asc, StatusEffectiveDate desc
任何帮助/指导都将不胜感激。
我有一个使用动态sql的存储过程,它根据传递给它的值更新一些列。我正在尝试测试多个值,而不必手动输入这些值。这些值是从表中获取的。有没有一种方法可以在表中传递所有这些值并让它通过proc?就像在您的常规编程语言中,您将遍历一个数组。我在sql server 2012中执行此操作。
代码是这样的
CREATE PROCEDURE sp1 @enteredvalue int
AS
BEGIN
UPDATE table1
SET column1 = 'some var char value',
column2 = 'some integer values&
我在sql server数据库中有一个表。 Source Destination Fare
-------------------------------
Delhi Mumbai 100
Mumbai Delhi 100
London New York 500 我必须编写一个sql查询来产生以下结果。 Source Destination Fare
-------------------------------
Delhi Mumbai 100
我有一个如下的查询
WITH TempResult AS(
SELECT AccessionNumber FROM [CASE]
UNION ALL
SELECT AccessionNumber FROM CaseReassign),
TempCount AS (SELECT COUNT(AccessionNumber) AS MaxRows FROM TempResult)
SELECT * FROM TempResult, TempCount
它可以很好地获取行及其计数。但是,什么时候才能帮助我在这个选择查询中动态添加一个过滤器呢?例如,我需要如下所示,但它会引发一个错误“公共表表达式已
我有一个sql语句,它将表中一行的值组合在一起,最后的结果有一个带有计算string.Example的列:
select Value1 + ' and ' + Value2 +' and another string' from MyTable
结果就是
m1 and n1 and another string
m1 and n2 and another string
如何更新查询以在表中的计算值之后在每一行中添加一个固定字符串。我希望有这样的东西(新的字符串需要在新的行上):
m1 and n1 and another string
test
m1 and n
我编写了以下SQL代码,以便在我的Server上运行。
SELECT
atd.DeviceID,
ROW_NUMBER() over(order by atd.deviceid) as rownumber
FROM
dbo.Devices atd
WHERE
(rownumber between 11 and 20);
我得到以下输出:
Msg 207,16级,状态1,第5行
列名“行号”无效。
Msg 207,第16级,状态1,第5行
列名“行号”无效。
如您所见,我希望使用ROW_NUMBER只获取通常由查询返回的行的子集。我以前从未使用过ROW_NU
我正在寻找使用动态SQL查询直接从(T)SQL创建嵌套JSON字符串的最佳解决方案。
在Server 2016中,很容易使用如下语句创建平面JSON字符串:
SELECT *
FROM tblTableName
FOR JSON AUTO
如果需要更复杂的嵌套结果,可以使用以下简单的递归例程:
CREATE FUNCTION [dbo].[NestedJSON](@Id uniqueidentifier)
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE @Json NVARCHAR(MAX) = '{}';
IF
我面对的是问题树视图到平面视图,我有一些来自树的数据,这些数据存储在我左下角图片中显示的表格中。我是说树的顶层是level1,第二层是level2,依此类推。我的预期结果如右下图所示。
如何在SQL Server中将数据动态转换为预期结果?我们必须创建动态列level1、level2、level3等等。你有什么想法吗?谢谢。
以下是示例数据
IF OBJECT_ID('tempdb..#TestData', 'U') IS NOT NULL
DROP TABLE #TestData;
CREATE TABLE #TestData (
Id
我正在创建一个名为"Deciles“的专栏。我需要根据行号的范围填充每个十进制数。所以“Decile 1”应该在第1行和第364000行之间。我使用的最新语法不起作用。请记住,我不是程序员。(我使用的环境是SQL Server2008)。救命!!
update dbo.August_Deciles
set Deciles = 'Decile 1'
Row_Number() over (Order By Row_Number())
between Row_Number(1) and Row_Number(326424)
我有一个表,其中包含两个可能的惟一标识符(ID1和ID2)。每一行将具有这两个标识符中的一个或两者。除了时间戳之外,每个ID的每一行中的数据都是完全相同的。我希望消除每个值中的重复项,但将空值视为唯一值。 这个问题:How to delete duplicate rows in sql server? 向我推荐了这个网站:http://www.codaffection.com/sql-server-article/delete-duplicate-rows-in-sql-server/ 其中我提出了以下查询: WITH CTE AS
(
SELECT *,ROW_NUMBER() OVER