我的表中有一列用于日期(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的选择.
我有一张主表和几张小表.
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) 码:
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) 码:
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) 我想编写一个存储过程,我可以根据以下条件更新表.
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.
谢谢
我有以下场景.
消息来源表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) 码:
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) 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.
我想获取所有具有一些字段重复值的记录(即键列).
我的代码:
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) 我有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#中做到这一点?