我最近在新计算机上安装了SSMS 2014,安装在C:中,但是C:没有足够的空间,因此我需要在D:上创建新数据库。请帮助我该怎么做?
我需要使用从"PM1000000000"开始的唯一序列填充列nvarchar(12),并为每行增加1.没有标识列或主键(编辑)循环,这使得这个问题非常具有挑战性,因为我发现的大多数示例都使用标识列来循环
我在MSDN上的https://support.microsoft.com/en-us/kb/111401上找到了一个示例,示例3,但它没有显示增加一行
任何人都可以帮助我填充这个字段,以便我可以将其作为主键吗?注意:这个表有6000万行,但我现在愿意接受任何想法才能使这个工作正常
假设我有一张这样的表,只有数千条记录.
| Foo | Bar |
| 1 | A_1 |
| 1 | A_2 |
| 2 | B_1 |
| 3 | B_1 |
| 3 | B_2 |
| 3 | B_1 |
| 4 | B_3 |
...
Run Code Online (Sandbox Code Playgroud)
当我执行下面的代码时,我显然得到了Bar以B开头的每一条记录.
SELECT Foo
FROM tableName
WHERE Bar LIKE 'B%'
Run Code Online (Sandbox Code Playgroud)
我知道使用GROUP BY会得到每个的前1个记录,但我需要的不仅仅是那个.使用SELECT TOP 100只会记录前100条记录,无论它们是哪个"B",并且因为有超过100个B_1值,所以我将获得所有这些.
我怎样才能获得每个唯一B 的前n条记录?例如,B_1的前100次出现,B_2的前100次出现等.
我一直在寻找答案,找不到满足我需求的确切答案.
我正在寻找将Datetime价值转换为YYYY-MM-DD-HHMM格式的方法.
我试过那一个:
select CONVERT(varchar(20),GETDATE(), 120) + replace(convert(varchar(5),getdate(),108),':','')
Run Code Online (Sandbox Code Playgroud)
但它没有给我正确的结果
有没有实用的方法呢?
我有以下查询:
SELECT pics.e_firedate FROM et_pics
Run Code Online (Sandbox Code Playgroud)
结果:
NULL
2014-12-01 00:00:00.000
2015-04-03 00:00:00.000
NULL
NULL
Run Code Online (Sandbox Code Playgroud)
我想将NULL值替换为''.
CASE
WHEN pics.e_firedate IS NULL THEN ''
ELSE pics.e_firedate
END
Run Code Online (Sandbox Code Playgroud)
使得NULL转化到1900-01-01 00:00:00.000,我已经试过投和替换没有成功也.
我怎样才能实现我的目标?
我有一个数据集,我想过滤掉满足特定条件的行,但是它比我想象的要复杂得多.
基本上我想做的事情是这样一种WHERE (column1 NOT LIKE 'Z%' and column2 != '2')观点,即查询只会返回一行,其中某一特定行没有像column1中的'Z%'那样的值,并且在column2 中没有值'2' .
例如:
完整的数据集
column1 | column2
-----------------
ACAL | 2
-----------------
ZVBBU3 | 2
-----------------
FSKE2 | X
Run Code Online (Sandbox Code Playgroud)
我想要的数据集
column1 | column2
-----------------
ACAL | 2
-----------------
FSKE2 | X
Run Code Online (Sandbox Code Playgroud)
但是,它没有这样做.所以,我想有可能是一个编程方法类似WHERE (!(column1 LIKE 'Z% and column2 = '2')),其中!将返回指定标准的对面,但是,这将引发一个语法错误.有没有办法做我想做的事情?
我有一张有100万条记录的表。我需要能够将这些记录移动到另一个数据库和另一个表。
我正在使用存储过程来获取数据。它填充一个数据适配器,然后bcp将数据放入新表中。
我们使用的是SQL Server 2005和C#4。我们将使用C#4.6或5.0迁移到SQL Server 2012或2014和Visual Studio 2015。如果有任何功能可以使其正常工作。
有没有办法,或者下面的代码有什么问题,可以防止数据适配器被填充,而是映射列并BulkCopy保留在服务器端,并且像SSIS那样将记录从db推送到新表中?
似乎大容量副本本身快如闪电,但是适配器填充失败,因为它用尽了内存,试图用一百万条记录填充适配器。一次不做1行,我只想在表之间移动数据。
一个表具有27列,其中5个不在表2中,而表2具有32列,并且某些列在两个表中的名称不同。
这是概念证明(PoC)。
sourceConn_transDB.Open();
SqlCommand sourceCommand = new SqlCommand(queryString, sourceConn_transDB);
DataTable table = new DataTable();
sourceCommand.CommandTimeout = 600;
using (var adapter = new SqlDataAdapter(sourceCommand))
{
WriteLineWithTime("Adapter Fill");
adapter.Fill(table);
}
if ((table == null) || (table.Rows.Count <= 0))
break;
using (SqlBulkCopy bulk = new SqlBulkCopy(targetConn_reportDB, SqlBulkCopyOptions.KeepIdentity, null) { DestinationTableName = "PatientEvent" })
{
bulk.ColumnMappings.Add(new SqlBulkCopyColumnMapping("PatientID", "PatientID"));
}
Run Code Online (Sandbox Code Playgroud) 我有一个存储过程,其中一个参数为DATE.这将从表中返回该日期的数据.
ALTER PROCEDURE [dbo].[UserReportData]
@As_ONDATE Datetime
AS
BEGIN
DECLARE @REPORTDATE datetime
--DECLARE @OPENING INT
SELECT *
INTO #temptable
FROM
(SELECT
a.CUser_id, b.User_Id, a.U_datetime AS REPORTDATE
FROM
inward_doc_tracking_trl a
INNER JOIN
user_mst b ON a.CUser_id = b.mkey
AND a.U_datetime = @As_ONDATE) AS x
DECLARE Cur_1 CURSOR FOR
SELECT CUser_id, User_Id FROM #temptable
OPEN Cur_1
DECLARE @CUser_id INT
DECLARE @User_Id INT
FETCH NEXT FROM Cur_1 INTO @CUser_id, @User_Id
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT U_datetime
FROM inward_doc_tracking_trl
WHERE U_datetime = …Run Code Online (Sandbox Code Playgroud) 我正在尝试提取所有包含非字母数字字符的所有行,除了允许空格之外,所有字符都最文字。任何标点符号,方括号-方形和圆形,货币符号等
我试图适应此处给出的建议。返回sql行,其中字段仅包含非字母数字字符,但是使用not LIKE '%[a-z0-9]%'带有空格的return行。精细。我将正则表达式修改为not LIKE '%[a-z0-9 ]%',现在返回零行。我究竟做错了什么?
我在SQL查询中有一个非常奇怪的错误,我不明白为什么.
SELECT
CODCLIFOR, '',
DSCCONTO1, '',
NUMDOC, '',
NUMSCAD, '',
DATASCADENZA, '',
REPLACE(CONVERT(varchar, CAST(IMPORTOSCLIT AS money), 105),',','.') , '',
BANCAAPPCF.BANCAAPPOGGIO, '',
TIPIEFFETTI.DESCRIZIONE
FROM
dbo.TABSCADENZE
INNER JOIN
dbo.ANAGRAFICACF ON CODCLIFOR = CODCONTO
INNER JOIN
dbo.TIPIEFFETTI ON TIPOEFFETTO = EFFETTO
LEFT JOIN
dbo.BANCAAPPCF ON CODCLIFOR = BANCAAPPCF.CODCONTO AND BANCAAPPCF.CODICE = TABSCADENZE.BANCAAPPOGGIO
WHERE
TIPOEFFETTO = 2
AND DATASCADENZA ='2016-08-05'
AND CODCLIFOR LIKE '%C%'
ORDER BY
BANCAAPPCF.BANCAAPPOGGIO DESC
Run Code Online (Sandbox Code Playgroud)
在DATASCADENZAwhere条件的日期,如果我把今天的日期像'2016-08-05'我得到结果..相反,如果我使用GETDATE()或DATEADD(DAY, 3, GETDATE())我没有得到结果...我不明白为什么.
你能帮助我吗?谢谢!