小编Sou*_*avA的帖子

SQL Server IN 与 = 查询中(对于一个值)

首先,对于模糊的主题名称感到抱歉(我想不出更好的东西)。

一个 SO 答案让我思考当我放弃=IN 时是否真的会对性能产生影响。

select 1 id, 'abc' name into #a union 
select 2, 'abcd' union 
select 3, 'abcde' 

select * from #a where id = 1 ------ Query 1
select * from #a where id in (1)------ Query 2
Run Code Online (Sandbox Code Playgroud)

我检查了这两个查询的查询计划,发现它们对我来说是相同的(也许这个例子很简单,可能这就是原因)。

但是使用 时我是否违反了任何性能最佳实践IN?当然,这肯定会涉及一些开销,因为 anIN可以处理多个项目,甚至SELECTS. 我知道IN在功能方面提供了更多,但对于有多个记录的情况id = 1

select * from #a where id = (SELECT id from #a where id = 1)------ Query 3
select …
Run Code Online (Sandbox Code Playgroud)

sql-server optimization in-clause

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

sql server中基于BETWEEN运算符编写case语句

我有一个CASE声明,如下所示:

SELECT CASE 
WHEN <expression>> BETWEEN 0 AND 10 THEN '0-10'
WHEN <<expression>> BETWEEN 11 AND 20 THEN '11-20'
WHEN <<expression>> BETWEEN 21 AND 30 THEN '21-30'
...
Run Code Online (Sandbox Code Playgroud)

这很好用,但看起来很丑。

我想将其转换为如下所示的内容:

SELECT CASE <expression>>
WHEN  BETWEEN 0 AND 10 THEN '0-10'
WHEN  BETWEEN 11 AND 20 THEN '11-20'
WHEN  BETWEEN 21 AND 30 THEN '21-30'
...
Run Code Online (Sandbox Code Playgroud)

显然,第二个查询看起来更好,因为我不必多次编写该复杂的表达式。但它出错了。

Incorrect syntax near the keyword 'between'.
Run Code Online (Sandbox Code Playgroud)

有人可以让我知道我在这里做错了什么吗?

更新:

正如所指出的,我已经更改了问题中的查询以使范围具有独占性。

sql sql-server

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

SSIS sql命令没有返回列信息

    \n
  1. 我在 中运行我的存储过程BI_Test_Server

  2. \n
  3. 然后我使用执行它exec [dbo].[bi_resource_dimension_sp] 1,1

  4. \n
  5. 我成功得到了结果SQL Server management Studio。所以我创建了一个Data Flow task,放置OLE DB源、数据连接和OLE DB目的地。我编辑了 OLE DB 源并创建了一个新连接。在 OLE DB 源 SQL 命令内部:SQL 命令文本我放置了步骤 4。

  6. \n
  7. 在 OLE DB 源 \xe2\x80\x93 SQL 命令文本中,我放置了exec [dbo].[bi_resource_dimension_sp] 1,1从 OLE DB 源中选择所有数据的命令,然后将其连接到数据连接并将数据转储到 OLE DB 目标中。

  8. \n
  9. 但是,当我尝试预览结果时,出现SQL 命令未返回任何列信息的错误。

  10. \n
\n\n

理想情况下,我需要勾选所有复选框以确保在哪一列中获取和放置数据。这就是我在第四步之后正在尝试和要做的事情。

\n\n

错误提示您可以\xe2\x80\x9c如果要继续操作\xe2\x80\x9d,请选择“确定”。但是,如果我这样做,当我进入列部分(位于连接管理器和错误输出之间的左上部分)时。它\xe2\x80\x99将显示空白列。

\n\n

请帮忙。

\n

ssis oledbconnection visual-studio-2008

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

在 MDX 语句中使用 .CHILDREN 和 .ALLMEMBERS 时的结果差异

我有两个几乎相似的 MDX 查询,一个是我使用 .CHILDREN,另一个是 .ALLMEMBERS。第一个不返回行,第二个返回两行。请帮助我理解为什么!

查询 1

select 
[Measures].[Claim As Of - Count] on 0,
[Accident Date].[Year].allmembers on 1
from [AW Cube]
where [Accident Date].[Year-Quarter-Month-Date].[Year].&[2010]
Run Code Online (Sandbox Code Playgroud)

---2行

查询 2

select 
[Measures].[Claim As Of - Count] on 0,
[Accident Date].[Year].children on 1
from [AW Cube]
where [Accident Date].[Year-Quarter-Month-Date].[Year].&[2010]
Run Code Online (Sandbox Code Playgroud)

--没有行

---- 索赔截至 - 计数 -- 全部 637,350 --2010 637,350

总而言之,AccidentDate 是我的 Cube [AW Cube] 中的维度之一。Year 是自然层次结构,而 [Year-Quarter-Month-Date] 是用户定义的层次结构。[年-季-月-日]按以下方式创建:年-->月-->季度-->日期。所以'年'可以通过做[事故日期].[年-季度-月-日].[年].成员和[事故日期].[年].成员来获得。

sql sql-server ssas mdx ssas-2012

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

带有日期范围过滤器的 MDX 查询

我是 MDX 查询的新手。我正在编写一个 MDX 查询来选择跨月的度量值,我将日期范围作为过滤器放在这里只是为了限制返回的月数。例如,我想要在 2014 年 1 月 1 日到 2014 年 6 月 30 日的日期范围内每个月的销售收入。理想情况下,它应该给我六个月的销售价值,即一月、二月、三月、四月、五月和六月。但是,当我写下面的查询时,出现错误。PFB 在下面输入代码here`ow 查询。

Select NON EMPTY {[Measures].[Target Plan Value]} ON COLUMNS,
NON EMPTY {[Realization Date].[Hierarchy].[Month Year].Members} ON ROWS
From [Cube_BCG_OLAP] 
( { [Realization Date].[Hierarchy].[Date].&[20140101] : 
[Realization Date].[Hierarchy].[Date].&[20141231] })
Run Code Online (Sandbox Code Playgroud)

我得到的错误是Hierarchy层次结构已经出现在Axis1轴中。这里 Date 和 Month Year 属于同一个名为 的维度表Realization Date。请帮我。提前致谢。

mdx date

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

LEFT JOIN 中的 Where 与 AND

我通常不会在执行 a 时AND在同一行中使用 an ,因为我过去遇到过问题。我宁愿不进入这个泡菜,而是将任何附加条件放在一个可靠的子句中。但是今天,出于好奇,我很想提出这个问题并一劳永逸地澄清。ONLEFT JOINWHERE

问题LEFT JOIN当我使用“exta”条件时,到底发生了什么?为什么它的行为方式与WHERE?

示例查询

create table #a
(
id int,
name varchar(3)
)


create table #b
(
id int,
name varchar(3)
)

insert into #a
select 1, 'abc'
union
select 2, 'def'
union
select 3, 'ghi'


insert into #b
select 1, 'abc'
union
select 2, 'def'

select * from #a a left join #b b on a.id = b.id 
where a.id = 3

select * …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

获取不属于活动目录中任何组的用户列表

在互联网和SO上,我可以看到找出AD中所有用户的解决方案或不属于某些特定组/组的用户.但我希望有一个不属于任何组的用户列表(仅限域用户的一部分).我有很多AD组,在脚本中硬编码是不切实际的.我也知道CSVDE工具,并且已经能够从中提取数据,但遗憾的是输出非常复杂且不方便用户使用.我要找的是在两列中提取这些信息 - User|MemberOf在一个平面文件中.PowerShell解决方案更受欢迎,但我对任何解决方案都持开放态度,只要它不涉及安装任何第三方软件,因为我的组织不允许这样做.

powershell extract active-directory

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

用sql中的单个实例替换多个字符实例

可能它是重复的,但我找不到解决方案.

需求:

我有以下字符串:

Heelloo
Heeelloo
Heeeelloo
Heeeeeelloo
Heeeeeeeelloo
.
.
.
Heeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeelloo
Run Code Online (Sandbox Code Playgroud)

预期产量: Hello

在SQL中实现这一目标的最佳方法是什么?

我正在使用的版本:

Microsoft SQL Server 2012 - 10.0.7365.0 (X64) Jul 28 2015 00:39:54 Copyright (c) 
Microsoft Corporation Parallel Data Warehouse (64-bit) on Windows NT 6.2 <X64> 
(Build 9200: )
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

0
推荐指数
1
解决办法
1028
查看次数