【发布时间】:2016-07-27 14:06:11
【问题描述】:
我只是在学习使用 SQL Server 来查询数据库(并最终创建我自己的)。我基本上是在尝试复制我已经用 Excel 完成的许多工作,但这不是重点。
编辑:这可能是一个更清晰的查询 -
SET NOCOUNT ON
DECLARE @StartDate DateTime
DECLARE @EndDate DateTime
SET @StartDate = DateAdd(mi,-10,GetDate())
SET @EndDate = GetDate()
SET NOCOUNT OFF
SELECT StartDateTime, TagName, Value
FROM History
WHERE TagName IN ('Master', 'Running')
AND DateTime >= @StartDate
AND DateTime <= @EndDate
这会返回如下内容:
Row StartDateTime TagName Value
-----------------------------------------------------
1 2016 07 27 15.01.39 Master 154
2 2016 07 27 15.01.39 Running 0
3 2016 07 27 15.01.40 Master 154
4 2016 07 27 15.01.40 Running 0
5 2016 07 27 15.01.41 Master 154
6 2016 07 27 15.01.41 Running 1
7 2016 07 27 15.01.42 Master 65
8 2016 07 27 15.01.42 Running 0
您可以看到StartDateTime 重复了两行。是否可以在同一行中获取一个 StartDateTime 的值?
【问题讨论】:
-
所以您想选择 TagName 为“MasterFaults”或 TagName 为“Running”且值为 1 的记录?
-
"基本上我只需要选择 'MasterFaults' TagName 的行,其中 'Running' 的值 = 1。"正好有 0 个结果的标签名称为“正在运行”和“MasterFaults”。你的逻辑有问题。
-
如果您发布代码、XML 或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器上的“代码示例”按钮 (
{ })工具栏以很好地格式化和语法突出显示它!
标签: sql-server database join nested