我给出了两个表格的简化版本,如下所示。
表记录
ID unit val
--- --- ---
1 KV 3
1 BAR 4
2 KV 7
2 KG 5
3 C 37
Run Code Online (Sandbox Code Playgroud)
表单位
unit convUnit formula
--- --- ---
KV CV @val * .865
KG lbs @val / 2.205
BAR PSI @val / 14.504
C F @val * 9/5 + 32
Run Code Online (Sandbox Code Playgroud)
我将无法更改表结构。
我知道哪个单位将转换为哪个单位(即我知道 KV 将转换为 CV,KG 将转换为磅等..)。
请注意,公式是一varchar列,我从表格tblRecords.unit中引用了tblUnit.unit
但我的问题是如何在单个查询中动态计算公式。即我想要以下输出。
ID unit val convVal(column will be counted on the fly using formula stored in tblUnit.formula …Run Code Online (Sandbox Code Playgroud) 我执行此过程并在我的应用程序中显示结果。如果我的查询没有返回任何结果,我仍然需要打印出列标题,并且由于它是动态查询,我无法进行硬编码。我的查询运行良好,如果没有找到结果,我该如何添加 NULL 行。因此,例如,在这是执行 SP 的结果的情况下,SQL 返回列标题,我想添加一个空行。
TSB 编号 系统 1 系统 2 系统 3
ALTER PROCEDURE [dbo].[spExportServiceTSB]
(@StartDate datetime,
@EndDate datetime,
@SelectedSystemIDs nvarchar (2000) = NULL,
@SelectedTsbIDs nvarchar (2000) = NULL,
@UserRoleID int
)
AS
DECLARE @PlatformID INT = NULL
IF(@SelectedSystemIDs = '')
BEGIN
SET @SelectedSystemIDs = NULL
END
IF(@SelectedTsbIDs = '')
BEGIN
SET @SelectedTsbIDs = '0'
END
IF(@UserRoleID = 1)
BEGIN
SET @PlatformID = 1
END
IF(@UserRoleID = 2)
BEGIN
SET @PlatformID = 2
END
IF (@UserRoleID = 3) …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个 SELECT 查询来计算BatchNumber从 1001 开始每 150 行增加 1 的列。
预期BatchNumber应该是1001前 150 行,然后1002是第 151-300 行,依此类推...
我尝试过在动态上使用除法ROW_NUMBER(),但无法得到它。
SELECT ID
,ROW_NUMBER() OVER (ORDER BY (SELECT ID)) AS RowNumber
,CASE
WHEN CONVERT(INT, (ROW_NUMBER() OVER (ORDER BY (SELECT ID)) % 150))=0
THEN 0 ELSE 1001 END
+ CONVERT(INT,(ROW_NUMBER() OVER (ORDER BY (SELECT ID)) / 150))
AS BatchNumber
FROM Table1 WITH (NOLOCK);
Run Code Online (Sandbox Code Playgroud) 我需要使用 SSMS 缩小流行的 CRM 数据库以将其移动到新服务器上。我将从 SQL Server 2008 Standard 转到 SQL Server 2014 Express。数据库处于简单恢复模式。它需要低于 10 gig 限制。
有 39% 的空间可以擦除,但缩小不起作用。在删除不同表中的 100000 行后,我已经多次执行此操作,包括此数据库,但这次不想缩小。
没有错误只是运行而什么也不做。
sql-server-2008 sql-server shrink sql-server-express sql-server-2014
下面的查询用于创建一个带有服务器名称列表的文本文件。
我遇到的问题是文本文件的创建就像
Server, Server, Server etc.
Run Code Online (Sandbox Code Playgroud)
但我需要它如下
Server
Server
Server
Run Code Online (Sandbox Code Playgroud)
查询:
BEGIN
CREATE TABLE [TempPSWmiObjectQuery]
(QueryText nvarchar(max))
END
INSERT INTO [TempPSWmiObjectQuery]
SELECT STUFF((SELECT char(13)+char(10),
SUBSTRING(ServerName, 1,
CASE WHEN CHARINDEX(',', ServerName) > 0
THEN CHARINDEX(',', ServerName)-1
ELSE LEN(ServerName)
END)
FROM MasterList
FOR XML PATH('')), 1, 1, '')
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE
EXEC xp_cmdshell 'bcp SQLEnv.dbo.TempPSWmiObjectQuery out "\\ServerName\Data\temp\testlist.txt" -c -T -S "ServerName\Instance"'
EXEC sp_configure 'xp_cmdshell', 0;
RECONFIGURE
DROP TABLE TempPSWmiObjectQuery
Run Code Online (Sandbox Code Playgroud)
PowerShell 脚本:
$StagingServer = "ServerName\InstanceName"
$StagingServerDatabase = "SQLEnv"
foreach($line in
[System.IO.File]::ReadLines("\\ServerName\Data\temp\testlist.txt")) …Run Code Online (Sandbox Code Playgroud) sql-server-2008 sql-server powershell sql-server-2008-r2 sql-server-2012
在数百万行上.. 是否值得缓存总量或关闭 NOCOUNT?而不是每次都请求那么多数据?
Sql Server 2008 R2
另外,是否仅在 Primary_Key 上运行 COUNT() 语句,以提高性能?
我想禁止从备份还原。我怎样才能做到这一点?我的一位朋友对我说
“为您的数据库获取证书,任何人都无法从您的备份中恢复”
我搜索了证书,但没有找到任何东西。我想确保没有人从备份或其他方式复制我的数据库。
反正有这个问题吗?
我有一个非常简单的查询:
SELECT COUNT(*)
FROM messages
INNER JOIN users ON messages.user_id = users.user_id
Run Code Online (Sandbox Code Playgroud)
加入需要 1146 毫秒,没有加入需要 220 毫秒(220 毫秒对我来说仍然很慢)。在包含 1,000,000+ 行的消息表上进行测试。
我在两个表 ( message_idand user_id)上都设置了主键,并设置了连接messages.user_idand的外键users.user_id。
此查询的原因是为分页系统提供记录总数。
我还能做些什么来加速查询?
我在 SQL Server 2008 中的数据库进入了可疑模式,我通过更改为紧急模式来修复它,然后我使用了这个查询
DBCC CHECKDB (Test, REPAIR_ALLOW_DATA_LOSS);
Run Code Online (Sandbox Code Playgroud)
现在我的表格中的数据字母从阿拉伯语变为问号,我想恢复编码而不丢失表格或丢失数据
是否可以在SQL Server 2008中使用SQLCMD创建表并生成数据并插入表中,而无需手动INSERT为每一行键入语句?
例子:
假设有 10 周(1、2、3 ... 10)和 2 个时间点(上午 11 点、下午 12 点)和 5 个场地(房间 1、房间 2 ... 房间 5)。因此总共会有 10 x 2 x 5 = 100 行。
那么,在给定 3 个数据参数(周、时间和地点)的情况下,是否有可能生成这 100 行的 SQL 语句?
+--------------------------------+
| Week | Time | Venue |
+--------------------------------+
| 1 | 11 am | Room 1 |
| 1 | 12 pm | Room 1 |
| 1 | 11 am | Room 1 |
| |
| 10 | …Run Code Online (Sandbox Code Playgroud) sql-server-2008 ×10
sql-server ×8
foreign-key ×1
join ×1
performance ×1
powershell ×1
shrink ×1
sqlcmd ×1
t-sql ×1