【发布时间】:2014-02-06 17:15:07
【问题描述】:
所以我是 SQL World 的新手,所以请原谅这个问题可能是多么无知。我最终可能需要为此执行一个存储过程,但在进入下一步之前尝试让它在查询中工作。
我正在尝试执行以下操作:
选择特定日期之间的记录
计算 where 语句中给定条件的记录。我有 6 条不同的记录要计数,每次计数都需要一个新列。
然后我想按 A 或 B 分组
我可以像下面这样计算记录。
SELECT (SELECT COUNT(*) AS 6F
FROM dbo.1_Data
WHERE ([B] BETWEEN 1 AND 9) AND (Time BETWEEN CONVERT(DATETIME, '2014-01-01 00:00:00', 102) AND CONVERT(DATETIME,
'2014-02-01 00:00:00', 102))) AS 6F,
(SELECT COUNT(*) AS 5E
FROM dbo.1_Data AS 1_Data_1
WHERE ([B] = 10) AND (Time BETWEEN CONVERT(DATETIME, '2014-01-01 00:00:00', 102) AND CONVERT(DATETIME, '2014-02-01 00:00:00',
102))) AS 5E,
(SELECT COUNT(*) AS 4D
FROM dbo.1_Data AS 1_Data_2
WHERE ([B] BETWEEN 11 AND 13) AND (Time BETWEEN CONVERT(DATETIME, '2014-01-01 00:00:00', 102) AND CONVERT(DATETIME,
'2014-02-01 00:00:00', 102))) AS 4D,
(SELECT COUNT(*) AS 1A
FROM dbo.1_Data AS 1_Data_3
WHERE ([B] = 14) AND (Time BETWEEN CONVERT(DATETIME, '2014-01-01 00:00:00', 102) AND CONVERT(DATETIME, '2014-02-01 00:00:00',
102))) AS 1A,
(SELECT COUNT(*) AS 2B
FROM dbo.1_Data AS 1_Data_4
WHERE ([A Step] BETWEEN 1 AND 25) AND (Time BETWEEN CONVERT(DATETIME, '2014-01-01 00:00:00', 102) AND CONVERT(DATETIME,
'2014-02-01 00:00:00', 102))) AS 2B,
(SELECT COUNT(*) AS 3C
FROM dbo.1_Data AS 1_Data_5
WHERE ([B Step] = 0) AND ([ A Step] = 0) AND (Time BETWEEN CONVERT(DATETIME, '2014-01-01 00:00:00', 102) AND
CONVERT(DATETIME, '2014-02-01 00:00:00', 102))) AS 3C
我可以这样做以获取时间范围内给定步骤中的记录数并进行分组。
SELECT COUNT([B]) AS [1A], Letter
FROM dbo.1_Data
WHERE (Time BETWEEN CONVERT(DATETIME, '2014-01-05 00:00:00', 102) AND CONVERT(DATETIME, '2014-01-10 00:00:00', 102)) AND ([B] = 14)
GROUP BY Letter
我正在寻找与此类似的最终结果。列名在顶部,记录数在其下方。
1A 的列,A 的记录计数和 B 的计数。
|1A |信 |
|34 |一个 |
|93 |乙|
如何将所有这些合并到一个查询语句中,以便在给定的日期范围和条件内整理出数据,然后按字母分组?
【问题讨论】: