SQL选择使用多列多个变量,其中
我有一个简单的表如下SQL选择使用多列多个变量,其中
CREATE TABLE [accounting].[ExtractControl](
[SourceSchema] [varchar](50) NOT NULL,
[SourceTable] [varchar](150) NOT NULL,
[SourceDatabase] [varchar](50) NOT NULL)
我想选择使用SourceSchema和sourceTable会值
目前我SourceDatabase按如下方式进行多项查询:
Select @s1 = SourceDatabase from accounting.ExtractControl where SourceSchema = 'xxx' and SourceTable = 'xxx'
Select @s2 = SourceDatabase from accounting.ExtractControl where SourceSchema = 'yyy' and SourceTable = 'yyy'
Select @s3 = SourceDatabase from accounting.ExtractControl where SourceSchema = 'xxx' and SourceTable = 'yyy'
我确实认为这可以用更优雅的方式来完成!谢谢您的帮助!
你是否在问这样的事情?
select SourceDatabase from accounting.ExtractControl
where SourceSchema in ('xxx', 'yyy') and SourceTable in ('xxx', 'yyy');
这将返回SourceDatabase
其中SourceSchema
要么是 'XXX' 或 'YYY' 和SourceTable
要么是 'XXX' 或 'YYY'。
嗨丹尼尔 它确实会返回SourceDatabase,但我希望它们存储在不同的变量,取决于SourceSchema和SourceTable 例如,当SourceSchema和SourceTable都是'xxx'时,s1应该是'xxx' s2 - >当两者都是'yyy'时......等等 – dopplesoldner
如果您确实需要三个不同的变量,请使用您当前的解决方案。 –
@dopplesoldner:同意丹尼尔:如果你想要三个不同的变量的三个结果,保持你目前的解决方案。然而,如果你更详细地说明你将如何使用这些变量,它可能会导致更好的方法(或者它可能不会)。 –
select * from accounting.ExtractControl
where SourceSchema = 'xxx' or SourceSchema = 'yyy'
嗨Mert 我希望他们被存储在不同的变量取决于SourceSchema和SourceTable 例如, s1应该是当SourceSchema和SourceTable都是'xxx's2 - >两者都是'yyy'时......等等 – dopplesoldner
我不认为有更好的办法。你可以在你的代码中选择像这样和linq。 – Mert
一个查询
SELECT @s1 = MAX(CASE WHEN SourceSchema = 'xxx' and SourceTable = 'xxx' THEN SourceDatabase END),
@s2 = MAX(CASE WHEN SourceSchema = 'yyy' and SourceTable = 'yyy' THEN SourceDatabase END),
@s3 = MAX(CASE WHEN SourceSchema = 'xxx' and SourceTable = 'yyy' THEN SourceDatabase END)
FROM accounting.ExtractControl
演示上SQL Fiddle
怎么样这个查询...选项
select SourceDatabase
from accounting.ExtractControl
where SourceSchema in ('xxx', 'yyy')
and SourceTable in ('xxx', 'yyy')
and SourceTable = SourceSchema
我没有试过,但我认为这是什么你需要
如果你想要每个单元格的值不同varriable然后用光标现在 –
你觉得没有用你目前的解决方案来优雅吗? –
@DanielHilgarth我在查询数据库3次返回3个变量,我想也许它可能返回所有3变量使用1查询对Db。 – dopplesoldner