小编Ano*_*mus的帖子

为什么 GROUP BY 语句中的通配符不起作用?

我正在尝试使以下 SQL 语句起作用,但出现语法错误:

SELECT A.*, COUNT(B.foo)
FROM TABLE1 A
LEFT JOIN TABLE2 B ON A.PKey = B.FKey
GROUP BY A.*
Run Code Online (Sandbox Code Playgroud)

这里,A 是一个有 40 列的宽表,如果可能,我想避免在 GROUP BY 子句中列出每个列名。我有很多这样的表,我必须在这些表上运行类似的查询,所以我必须编写一个存储过程。解决这个问题的最佳方法是什么?

我正在使用 MS SQL Server 2008。

sql-server-2008 sql-server t-sql group-by

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

为什么 SELECT 1/2 返回 0?

正如标题所说。我什至尝试过SELECT CONVERT(NUMERIC, 1/2)也返回0。

我正在使用 SQL Server 2008。

sql-server-2008 sql-server t-sql

19
推荐指数
2
解决办法
8343
查看次数

跨数据库更改列数据类型

我有一堆包含许多数据类型列的表ntext。我想改变所有这些列的特定数据库的所有表格中nvarchar(max),由于计划弃用 (编辑:还因为我不能使用这样的列DISTINCTGROUP BY等等)。是否可以在不手动为每个表使用ALTER TABLEwith 的情况下完成此ALTER COLUMN操作?

我正在使用 MS SQL Server 2008。

sql-server-2008 sql-server datatypes type-conversion

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

有什么办法可以在同一个大表上使用 3x UNION 来加速查询?

假设下面的查询是合法的并且执行成功,有什么办法可以加快速度吗?

SELECT foo from T1 --T1 is a huge (>5e6 rows) table with no indexes
UNION
SELECT bar from T1
UNION
SELECT baz from T1
UNION
SELECT qux from T1
Run Code Online (Sandbox Code Playgroud)

上面显示的四列都是 type nvarchar(128)、非稀疏和可为空的。我使用的是 SQL Server 2008。谢谢!

编辑:提供了更多信息。我无法添加索引,因为它是 Stage 表。另外,删除DISTINCTs; 我完全忘记了这一点。

Phil:我如何将其合并为一个查询?

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

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