【问题标题】:Query : problem in where section查询:where部分的问题
【发布时间】:2011-09-27 19:47:22
【问题描述】:

我需要这样写一个查询:

SELECT S , D1 , D2 , (D1+D2) as D_Sum , ( (D1+D2) / 
                 (X-(
                 SELECT SUM(T1+T2) 
                 FROM TBL1 
                 WHERE FCode=81 AND DCode=1 AND S<S
                 )) AS SSS 
FROM TBL1 
WHERE Salon=1 AND FCode=81 AND DCode=1

我在子查询的 where 部分遇到了 S&lt;S 的问题。 S&lt;S 喜欢 FALSE 并且不起作用。

第一个 S 是表中所有记录中的所有 s,第二个 S 存储在每个记录中。

S&lt;S:我需要选择所有 s 小于 s 的记录存储在现在处理的记录中。

【问题讨论】:

  • 你能更正一下文字吗?文字很难看懂:)
  • 这段代码没有错误。但只有我更改了字段名称,因为您不懂我的语言。
  • 我只能说S&lt;S 总是假的。

标签: sql where


【解决方案1】:

为表格命名:

SELECT S , D1 , D1 , (D1+D2) as D_Sum , ( (D1+D2) / 
                 (X-(
                 SELECT SUM(innerTBL.T1+innerTBL.T2) 
                 FROM TBL1 innerTBL 
                 WHERE innerTBL.FCode=81 AND innerTBL.DCode=1 AND outerTBL.S<innerTBL.S
                 )) AS SSS 
FROM TBL1 outerTBL
WHERE Salon=1 AND FCode=81 AND DCode=1

注意:我应该使用工作“别名”而不是“名称”。

【讨论】:

  • 仍然 - 他们需要一个别名,因为你引用了两次
  • 您可以在查询中为其命名(示例中为innerTBL 和outerTBL)。也许我遗漏了一些东西,但我没有看到问题。
  • @Arash,由于TBL1 被多次使用,您需要引用它的特定实例。因此,比较的不是单个表中的同一列,而是两个连接表中具有相同名称的两个列。
  • @DavidEG 计算括号的个数:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
相关资源
最近更新 更多