【问题标题】:Issue when using SQL query in excel在 Excel 中使用 SQL 查询时的问题
【发布时间】:2016-08-22 06:50:27
【问题描述】:

我有以下 sql,它适用于 http://sqlfiddle.com/。但是我试图在 Excel 中的 MS Sql 中使用它。任何想法为什么这在 excel 中不起作用以及我需要改变什么?非常感谢:)

架构:

CREATE TABLE table1(colA DATE, colB INT, colC TEXT);

INSERT INTO table1(colA, colB, colC) VALUES ("2016-01-01", "1", "C1");
INSERT INTO table1(colA, colB, colC) VALUES ("2016-01-02", "2", "C2");

CREATE TABLE table2(colD DATE, colE INT, colF TEXT);

INSERT INTO table2(colD, colE, colF) VALUES ("2016-01-03", "3", "F1");
INSERT INTO table2(colD, colE, colF) VALUES ("2016-01-04", "4", "F2");

SQL 查询:

SELECT colA, 
       colB, 
       (CASE When colA > CURRENT_DATE - INTERVAL '9' MONTH then '+9 Months'
             When colA > CURRENT_DATE - INTERVAL '6' MONTH then '6 Months'
             When colA > CURRENT_DATE - INTERVAL '4' MONTH then '4 Months'
             When colA > CURRENT_DATE - INTERVAL '2' MONTH then '2 Months'
        END) AS colG 
FROM (SELECT colA, colB FROM table1
      UNION ALL
      SELECT colD, colE FROM table2
     ) t;

【问题讨论】:

  • 你得到什么错误?

标签: sql sql-server excel-2010


【解决方案1】:

首先,我建议您将colC 更改为VARCHAR,因为TEXT 已被弃用,并将在后续SQL Server 版本中删除。也许这会解决你的问题。

其次,您的查询根本不起作用,也许您在 SQL Fiddle 中选择了不同的 RDBMS。 SQL Server中没有INTERVAL这种东西,你应该使用DATEDIFF函数。

这是正确的说法。

SELECT colA
    , colB
    , CASE
        WHEN DATEDIFF(MM, colA, CURRENT_TIMESTAMP) > '9'THEN '+9 Months'
        WHEN DATEDIFF(MM, colA, CURRENT_TIMESTAMP) > '6' THEN '6 Months'
        WHEN DATEDIFF(MM, colA, CURRENT_TIMESTAMP) > '4' THEN '4 Months'
        WHEN DATEDIFF(MM, colA, CURRENT_TIMESTAMP) > '2' THEN '2 Months'
    END AS colG
FROM (
    SELECT colA, colB
    FROM table1
    UNION ALL
    SELECT colD, colE
    FROM table2
    ) AS T;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多