我习惯了Firebird查询,现在我需要在SQL Server中创建一个,但是我的子查询出错了。
错误:
Msg 102,Level 15,State 1,Line 14
附近的语法不正确
')'
查询:
SELECT
CVE_ART, IIF (CANTIDAD < 0, 0, CANTIDAD) AS CANTIDAD
FROM
(SELECT
CVE_ART,
SUM((CANT * SIGNO * -1) / 6) AS CANTIDAD
FROM
MINVE05
WHERE
DATEDIFF(MONTH, FECHA_DOCU, CURRENT_TIMESTAMP) > 0
AND DATEDIFF(MONTH, FECHA_DOCU, CURRENT_TIMESTAMP) <= 6
AND CVE_CPTO IN (2, 4, 51)
AND ALMACEN = 1
GROUP BY
CVE_ART)
答案 0 :(得分:5)
您需要为派生表
指定别名ArrayList<Tile> board = json.fromJson(ArrayList.class, Tile.class,
Gdx.files.internal("data/tiles.json").readString());
答案 1 :(得分:0)
为什么不写这样的查询?
SELECT CVE_ART,
(CASE WHEN SUM((CANT*SIGNO*-1)/6) < 0 THEN 0
ELSE SUM((CANT*SIGNO*-1)/6)
END) AS CANTIDAD
FROM MINVE05
WHERE DATEDIFF(MONTH, FECHA_DOCU, CURRENT_TIMESTAMP) > 0 AND
DATEDIFF(MONTH, FECHA_DOCU, CURRENT_TIMESTAMP) <= 6
CVE_CPTO IN (2, 4, 51) AND
ALMACEN = 1
GROUP BY CVE_ART ;
除了占用空间之外,子查询实际上对查询没有太大作用。使用DATEDIFF()
很奇怪。它计算两个日期之间的边界。所以,第一个是说两个日期的日历月份不同。所以,2018-01-31和2018-02-01符合条件,但2018-01-01和2018-01-31不符合。