小编007*_*007的帖子

在SQL中按日期过滤

我的表中有一列用于日期(DateTime),我正在尝试创建一个WHERE子句, WHERE dates BETWEEN 12-11-2012 and 12-13-2012

日期列的样本值= 2012-05-24 00:38:40.260

我想说明在MM-DD-YYYY和MM-DD-YYYY之间的日期.

我试过了

WHERE dates BETWEEN ((convert(nvarchar(10), dates,110) = '2012-12-12') AND (convert(nvarchar(10), dates,110) = '2012-12-12'))
Run Code Online (Sandbox Code Playgroud)

但似乎没有用."语法不正确="

请帮忙

编辑:

感谢各种选项和描述人.得到了@ RichardTheKiwi的选择.

sql t-sql sql-server

15
推荐指数
2
解决办法
11万
查看次数

将数据从一个表插入另一个具有相同列名的另一个表的存储过程

我有一张主表和几张小表.

  • Master 表有 C1 | C2 | C3 | C4 | C5 |
  • 一张小桌子 C1 | C2 | C3 |

(还有@C1一个变量,其值与Master表中的C1值相匹配).

列名匹配两个表.我想创建一个存储过程从插入值Master表(C1,C2,和C3更小的表)( C1, C2, C3).

我的努力:

Create proc Schema.Proc
(@C1 int)
AS
BEGIN
INSERT INTO SmallTable
(C1, C2, C3) --- Columns of smaller table
Values (SELECT C1, C2, C3 ---Columns of Master table
FROM MasterTable)
WHERE C1 = @C1 --- Where value of C1 of Master table …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server stored-procedures

8
推荐指数
1
解决办法
5万
查看次数

T-SQL - 将数据插入父表和子表

码:

CREATE TYPE dbo.tEmployeeData AS TABLE 
(
     FirstName NVARCHAR(50),
     LastName NVARCHAR(50),
     DepartmentType NVARCHAR(10),
     DepartmentBuilding NVARCHAR(50),
     DepartmentEmployeeLevel NVARCHAR(10),
     DepartmentTypeAMetadata NVARCHAR(100),
     DepartmentTypeBMetadata NVARCHAR(100)
)
GO

CREATE PROC dbo.EmployeeImport 
    (@tEmployeeData tEmployeeData READONLY)
AS
BEGIN
     DECLARE @MainEmployee TABLE 
                           (EmployeeID INT IDENTITY(1,1),
                            FirstName NVARCHAR(50),
                            LastName NVARCHAR(50))

    DECLARE @ParentEmployeeDepartment TABLE 
                                      (EmployeeID INT,
                                       ParentEmployeeDepartmentID INT IDENTITY(1,1),
                                       DepartmentType NVARCHAR(10))

    DECLARE @ChildEmployeeDepartmentTypeA TABLE 
                  (ParentEmployeeDepartmentID INT,
                   DepartmentBuilding NVARCHAR(50),
                   DepartmentEmployeeLevel NVARCHAR(10),
                   DepartmentTypeAMetadata NVARCHAR(100))

    DECLARE @ChildEmployeeDepartmentTypeB TABLE 
                  (ParentEmployeeDepartmentID INT,
                   DepartmentBuilding NVARCHAR(50),
                   DepartmentEmployeeLevel NVARCHAR(10),
                   DepartmentTypeBMetadata NVARCHAR(100))

    -- INSERT CODE GOES HERE
    SELECT * …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2012

6
推荐指数
1
解决办法
5261
查看次数

在T-SQL中计算相交的时间间隔

码:

CREATE TABLE #Temp1 (CoachID INT, BusyST DATETIME, BusyET DATETIME)
CREATE TABLE #Temp2 (CoachID INT, AvailableST DATETIME, AvailableET DATETIME)

INSERT INTO #Temp1 (CoachID, BusyST, BusyET)
SELECT 1,'2016-08-17 09:12:00','2016-08-17 10:11:00'
UNION
SELECT 3,'2016-08-17 09:30:00','2016-08-17 10:00:00'
UNION
SELECT 4,'2016-08-17 12:07:00','2016-08-17 13:10:00'

INSERT INTO #Temp2 (CoachID, AvailableST, AvailableET)
SELECT 1,'2016-08-17 09:07:00','2016-08-17 11:09:00'
UNION
SELECT 2,'2016-08-17 09:11:00','2016-08-17 09:30:00'
UNION
SELECT 3,'2016-08-17 09:24:00','2016-08-17 13:08:00'
UNION
SELECT 1,'2016-08-17 11:34:00','2016-08-17 12:27:00'
UNION
SELECT 4,'2016-08-17 09:34:00','2016-08-17 13:00:00'
UNION
SELECT 5,'2016-08-17 09:10:00','2016-08-17 09:55:00'

--RESULT-SET QUERY GOES HERE

DROP TABLE …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2012

6
推荐指数
1
解决办法
756
查看次数

检查 - 比较>更新SQL表

我想编写一个存储过程,我可以根据以下条件更新表.

Table 
EmployeeID  GroupID Group#
123     G123        3
456     G456        3
789     G789        3
101     G101        3

View
GroupID_Granular    GroupID_Middle  GroupID_Executive
G123            M123            E123
G789            M789            E789
Run Code Online (Sandbox Code Playgroud)

如果在View的GroupID_Granular列中找到GroupID,请更新表,设置GroupID = GroupID_Executive并将Group#设置为1.

我不知道如何检查/比较然后运行Update cmd.

谢谢

sql t-sql sql-server sql-server-2008

5
推荐指数
1
解决办法
68
查看次数

T-SQL | 字符串"操纵"和聚合

我有以下场景.

消息来源表1

CREATE TABLE #Table1 
(
     Div varchar(10), 
     Dept varchar(10), 
     States varchar(10)
)

INSERT INTO #Table1
   SELECT 'Div1','Dept1','CA,NV,TX'
   UNION ALL
   SELECT 'Div2','Dept2','MI,OH,IN'
   UNION ALL
   SELECT 'Div3','Dept2','NY,NJ,PA'
   UNION ALL
   SELECT 'Div4','Dept1',NULL
Run Code Online (Sandbox Code Playgroud)

消息来源表2

CREATE TABLE #Table2 
(
    Div varchar(10), 
    Dept varchar(10), 
    States varchar(10)
)

INSERT INTO #Table2
   SELECT 'Div1','Dept1','CA'
   UNION ALL
   SELECT 'Div1','Dept1','NV, TX'
   UNION ALL
   SELECT 'Div1','Dept1','TX, CA'
   UNION ALL
   SELECT 'Div1','Dept1','CA, NV'
   UNION ALL
   SELECT 'Div2','Dept2','MI, OH'
   UNION ALL
   SELECT 'Div2','Dept2','MI, IN'
   UNION ALL
   SELECT 'Div2','Dept2','OH'
   UNION ALL
   SELECT 'Div3','Dept2','NY, …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2012

5
推荐指数
2
解决办法
109
查看次数

T-SQL - 范围之间的过滤日期

码:

DECLARE @T1 TABLE ([ID] INT, [WD] DATE, [SD] DATETIME, [ED] DATETIME, [Val] INT)
INSERT INTO @T1 ( [ID], [WD], [SD], [ED], [VAL] )
VALUES  ( 1, '2016-02-14', '2016-02-14 08:00:00', '2016-02-14 16:30:00', 12 )
        ,( 1, '2016-02-14', '2016-02-16 08:00:00', '2016-02-16 16:30:00', 15 )
        ,( 3, '2016-02-14', '2016-02-16 08:00:00', '2016-02-16 16:30:00', 12 )
        ,( 1, '2016-02-21', '2016-02-22 08:00:00', '2016-02-22 16:30:00', 100 )
        ,( 2, '2016-02-21', '2016-02-25 08:00:00', '2016-02-25 16:30:00', 124 )
        ,( 3, '2016-03-20', '2016-03-21 08:00:00', '2016-03-21 16:30:00', 10 )
        ,( …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2014

5
推荐指数
1
解决办法
61
查看次数

计算给定结束时间(datetime2)和持续时间(时间(7))的开始时间

DECLARE @TABLE TABLE (ID INT IDENTITY(1,1), FinalDateTime Datetime2(7), 
 ElapsedTime Time(7))

INSERT INTO @TABLE (FinalDateTime, ElapsedTime)
SELECT '2014-01-21 00:00:00.1110010','12:00:00.1100009' 
  -- Expected Output = '2014-01-20 12:00:00.0010001'
UNION ALL
SELECT '2014-01-20 14:00:00.1110010','02:00:00.1100009' 
  -- Expected Output = '2014-01-20 12:00:00.0010001'
UNION ALL
SELECT '2014-01-20 12:02:00.1110010','00:02:00.1100009' 
  -- Expected Output = '2014-01-20 12:00:00.0010001'
UNION ALL
SELECT '2014-01-20 12:00:02.1110010','00:00:02.1100009' 
  -- Expected Output = '2014-01-20 12:00:00.0010001'
UNION ALL
SELECT '2014-01-20 12:00:00.1110010','00:00:00.1100009' 
  -- Expected Output = '2014-01-20 12:00:00.0010001'

SELECT * FROM @TABLE
Run Code Online (Sandbox Code Playgroud)

我想减去time(7)Datetime2(7).我无法弄清楚如何分别减去整个时间而不是HH/MM/SS/MS.

sql sql-server sql-server-2008

4
推荐指数
1
解决办法
982
查看次数

重复计数 - TSQL

我想获取所有具有一些字段重复值的记录(即键列).

我的代码:

CREATE TABLE #TEMP (ID int, Descp varchar(5), Extra varchar(6))
INSERT INTO #Temp
SELECT 1,'One','Extra1'
UNION ALL
SELECT 2,'Two','Extra2'
UNION ALL
SELECT 3,'Three','Extra3'
UNION ALL
SELECT 1,'One','Extra4'

SELECT ID, Descp, Extra FROM #TEMP
;WITH Temp_CTE AS
(SELECT *
 , ROW_NUMBER() OVER (PARTITION BY ID, Descp ORDER BY (SELECT 0)) 
    AS DuplicateRowNumber
    FROM #TEMP
)
SELECT * FROM Temp_cte 
DROP TABLE #TEMP
Run Code Online (Sandbox Code Playgroud)

最后一列告诉我基于ID和Descp值每行出现的次数.我想要那一行,但我还需要另一列*,表示ID = 1和Descp ='One'的两行都出现过不止一次.

所以一个额外的列*(即MultipleOccurances(bool)),其中ID为1的两行为1,Descp为'One',其他行为0,因为它们只显示一次.

我怎样才能做到这一点?(如果可能的话,我想避免使用Count(1)> 1或其他东西.

编辑:

期望的输出:

ID  Descp   Extra   DuplicateRowNumber  IsMultiple
1   One     Extra1  1 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008

3
推荐指数
1
解决办法
261
查看次数

在T-SQL的模棱两可?

我有IF条件,

IF (this.Something.GID == 1)
{
Something = "something";
}
Run Code Online (Sandbox Code Playgroud)

我想说除了1之外我想再增加一个选项

IF (this.Something.GID **is 1 or 2**)
{
Something = "something";
}
Run Code Online (Sandbox Code Playgroud)

我该如何在C#中做到这一点?

.net c# t-sql asp.net visual-studio

2
推荐指数
1
解决办法
76
查看次数