2015-10-21 48 views
-2

在mysql中運行以下查詢時,它工作得很好。參數索引超出範圍(1>參數數目,爲0)。 Mysql vs Java

SELECT 
    a.feed_date, a.partner_name, 
    SUM(a.count) as InputCount, 
    SUM(CASE when (b.count is null) then 0 else b.count end) as OutputCount 
FROM 
(SELECT year,week,partner_name, feed_date, count 
    FROM op_dev.op_stats 
    WHERE partner_name IN ('xyz, INC.','abc') 
    AND mkt_elig_cd='Y' 
    AND rel_grp_type_no='00000' 
    AND feed_type='SellerChar') AS A 
LEFT OUTER JOIN 
    (SELECT year,week,feed_date, partner_name, count 
    FROM opt_dev.op_stats 
    WHERE partner_name IN ('xyz, INC.','abc') 
    AND mkt_elig_cd='Y' 
    AND rel_grp_type_no='00000' 
    AND feed_type='MSF') AS B 
ON A.partner_name = B.partner_name 
    AND A.year=B.year 
    AND A.week=B.week 
GROUP BY A.week,A.year; 

然而,當我使用相同的查詢字符串,並把它通過Java代碼,它給我以下錯誤:

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). 

可有人請幫我指出是什麼導致這個問題。

+1

那麼,SQL是不可能讀取的。請重新格式化。 --- SQL如何執行?錯誤可能與此有關,所以你需要顯示它。 – Andreas

+0

感謝Nguyen格式。我通過準備語句使用sql來傳遞上面的字符串作爲查詢。 – TrexTroy

+2

請包含用於執行此操作的Java代碼以及整個堆棧跟蹤,而不僅僅是錯誤消息。 –

回答

1

貌似你試圖執行查詢,並指定參數(檢查java和休眠),但查詢沒有參數。

+0

是的,這是問題所在。謝謝。 – TrexTroy

+0

然後接受正確的答案。 (勾號) – StanislavL

0

GROUP BY子句必須包含選定的列。如果沒有選擇列,GROUP BY子句可以使用任何列。 你可以試試這個:

SELECT partner_name, feed_date, 
    SUM(CASE WHEN feed_type='SellerChar' THEN count ELSE 0 END) OVER(PARTITION BY year,week,feed_type) AS InputCount, 
    SUM(CASE WHEN feed_type='MSF' THEN count ELSE 0 END) OVER(PARTITION BY year,week,feed_type) AS OutputCount 
FROM op_dev.op_stats 
WHERE partner_name IN ('xyz, INC.','abc') 
    AND mkt_elig_cd='Y' 
    AND rel_grp_type_no='00000' 
    AND (feed_type='SellerChar' OR feed_type='MSF') 
+0

我已將該組移除,但仍顯示相同的問題。 – TrexTroy

+0

哦,我的代碼在SQL Server中。你的標籤不清楚 –

相關問題