【问题标题】:Where do I put WHERE command on complex sql command我在哪里将 WHERE 命令放在复杂的 sql 命令上
【发布时间】:2015-01-17 04:51:29
【问题描述】:

数据库管理员向我发送了我的 asp.net 项目的 sql 命令。但这对我来说很难理解。

命令:

SELECT to_char(FirstDate, 'yyyymmdd') AS EXPR1, SUM(Single) AS SingleFile, SUM(Sum) AS AllFiles ROUND(SUM(SingleSize) / (1024 * 1024 * 1024), 2) AS SingleSize,
            ROUND(SUM(SumSize)/(1024 * 1024 * 1024), 2) AS SumSize
FROM (SELECT FILE, MIN(DATE) AS FirstDate, 1 AS Single, COUNT(*) AS Sum, MAX(Size) AS SingleSize, SUM(Size) AS SumSize
            FROM INETISLE.XFERLOG
            GROUP BY FILE) derivedtbl_1
GROUP BY to char(FirstDate,'yyyymmdd')
ORDER BY 1

输出如下:

EXPR1       SingleFile      SumFile         SingleSize     SumSize
19.11.2014  123123          13423           12312423       23424132

我需要将 EXPR1(date) 链接到我的日历。

Asp.net 日历控件添加在 WHERE 中,如下所示:

WHERE ([EXPR1] = ?)

我应该把这个 WHERE 放在我复杂的 sql 命令的什么地方?

我只需要选择我在日历上选择的一天。

【问题讨论】:

  • 在 FROM 和 GROUP BY 之间,所以有两个地方可以添加 where。
  • 您在查询中从哪里得到 EXPR1?
  • 我在您给我们的查询中根本没有看到 EXPR1。这是哪里来的?
  • 您能帮我们将您的列名翻译成英文吗?我们中的一些人可能更容易理解 :) 我猜 DOSYA 是白天?
  • 抱歉,为 EXPR1 编辑。我会编辑翻译成英文。

标签: sql asp.net oracle


【解决方案1】:
SELECT to_char(IlkTarih, 'yyyymmdd') AS EXPR1, SUM(Toplam) AS ToplamDosya,     ROUND(SUM(TekilBoyut) / (1024 * 1024 * 1024), 2) AS TekilBoyut,
            ROUND(SUM(ToplamBoyut)/(1024 * 1024 * 1024), 2) AS ToplamBoyut
FROM (SELECT DOSYA, MIN(TARIH) AS IlkTarih, 1 AS Tekil, COUNT(*) AS Toplam, MAX(BOYUT) AS TekilBoyut, SUM(BOYUT) AS ToplamBoyut
            FROM INETISLE.XFERLOG
            WHERE DATE(TARIH) = ?
            GROUP BY DOSYA) derivedtbl_1
GROUP BY to char(IlkTarih,'yyyymmdd')
ORDER BY 1

【讨论】:

  • 谢谢,但出现错误:ora-00936: 缺少表达式。
猜你喜欢
  • 1970-01-01
  • 2021-04-20
  • 2018-07-28
  • 2017-12-02
  • 2012-03-11
  • 1970-01-01
  • 2015-10-26
  • 2015-08-30
  • 2019-11-03
相关资源
最近更新 更多