【问题标题】:SQL IF- ELSE if Statement - Or CaseSQL IF- ELSE if 语句 - 或案例
【发布时间】:2014-12-03 18:49:09
【问题描述】:

我正在尝试用 SQL 做一些事情,并且想知道这是否可能。 我有一个看起来像这样的电子表格

 Type   Qnty     description        MISCNUMB 
 A      1         One Is One           abc    
 A      1        One is bla bla        ASD
 A      2        asdasdsa              23213
 B      12       Two One               321
 B      1111                     
 C      122312   DRE                   321

我可能在某些列中有重复值。

当我从表中选择类型时,有没有办法不获取所有重复值并且每个实例只有一个?

我可以使用If- ELIF 来比较表中的列并编写查询吗?

另一件事是,我的数据太大了,我无法通过数据为每个数据提供一个案例陈述。我最终希望能够找到这样的数据。

IF Type =A > 显示 qnty > (一旦用户选择了这些值)> 然后显示关于所选 qnty 的描述> 显示杂项编号

SELECT 
    Qnty 
FROM 
    TABLE_1 
WHERE 
    TYPE = 'A' 
    (I should technically get 1,1,2 right?)
    Pseudo code = IF Qnty= '1' FROM TABLE_1 
       then show only descriptions and MISC numb for those values, 
       else show rest) 

【问题讨论】:

  • 您对样本数据的期望结果是什么?您不只是在寻找SELECT DISTINCT Qnty 吗?
  • 嘿,我不太确定你想要什么。你能显示一个结果表吗?那我就可以帮你了:)
  • 让我重新表述一下,我在第三方软件中一次拉入一列,用户在其中选择一个值,然后根据这些选择的值我拉入另一列依赖用户先前选择的值。例如,用户选择 A,然后他们将看到 1、1、2,然后如果选择 1,他们将看到描述和 MISC。我希望它更清楚。 @sgeddes
  • 绝对不清楚你想发生什么,你的描述太模棱两可了。
  • 如果您根据您选择的特定值拉取列,那么将对该操作执行不同的查询。这两个操作不能同时包含在同一个查询中。

标签: sql sql-server tsql if-statement datatable


【解决方案1】:

第二次尝试理解它。

DECLARE @TABLE_1 TABLE (Type NVARCHAR, Qnty INT, Description NVARCHAR(100), MISCNUMB NVARCHAR(100))
DECLARE @UserChoosesOption INT

INSERT INTO @TABLE_1 
VALUES
     ('A',1,'random text', 'aaa')
    ,('A',1,'random text1', 'aaa1')
    ,('A',2,'random text2', 'aaa2')
    ,('B',12,'random text3', 'aaa3')
    ,('B',1111,'random text4', 'aaa4')
    ,('C',122312,'random text5', 'aaa5')

SELECT 
    Qnty
FROM @TABLE_1 WHERE Type = 'B'

SELECT @UserChoosesOption = 12

SELECT 
    Description, 
    MISCNUMB 
FROM @TABLE_1
WHERE Qnty = @UserChoosesOption

【讨论】:

    猜你喜欢
    • 2016-11-10
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多