RDBMS是INFORMIX 10.0如何使用子查詢與IBM的Informix 10.0
SELECT owner FROM systables WHERE TABNAME= ' VERSION';
返回9.50C1(這相當於版本10.x)
的子查詢工作得很好:
SELECT acct.fund_acct_nbr, acct.bin, prod.issuer_id, COUNT(*)
FROM fund_acct AS acct
JOIN products AS prod ON acct.cusip = prod.cusip
WHERE prod.issuer_id = 'xxxx'
AND SUBSTR(acct.bin, 1, 1) = 'x'
GROUP BY acct.fund_acct_nbr, acct.bin, prod.issuer_id;
我想將此查詢用作子查詢。
So my question is:
How do I get this done on IBM INFORMIX v10.0?
Should be simple and straight forward right?
任何嘗試使用該查詢作爲子查詢生成此有意義的消息:
「失敗查詢=> 2」
INFORMIX - 否「WITH」子句所以這將不起作用:
WITH issuer_accts AS
(
SELECT acct.fund_acct_nbr, acct.bin, prod.issuer_id, COUNT(*)
FROM fund_acct AS acct
JOIN products AS prod ON acct.cusip = prod.cusip
WHERE prod.issuer_id = 'xxxx'
AND SUBSTR(acct.bin, 1, 1) = 'x'
GROUP BY acct.fund_acct_nbr, acct.bin, prod.issuer_id
)
SELECT issuer_accts.issuer_id, COUNT(*)
FROM issuer_accts
GROUP BY issuer_accts.issuer_id;
試圖以此爲榜樣(IBM documentation):
SELECT issuer_id, COUNT(*)
FROM
(
SELECT acct.fund_acct_nbr, acct.bin, prod.issuer_id, COUNT(*)
FROM fund_acct AS acct
JOIN products AS prod ON acct.cusip = prod.cusip
WHERE prod.issuer_id = 'xxxx'
AND SUBSTR(acct.bin, 1, 1) = 'x'
GROUP BY acct.fund_acct_nbr, acct.bin, prod.issuer_id
) issuer_accts
GROUP BY issuer_id;
試圖以此爲榜樣(specific to INFORMIX v10.0)
SELECT issuer_id, COUNT(*)
FROM
TABLE(MULTISET(
SELECT acct.fund_acct_nbr, acct.bin, prod.issuer_id, COUNT(*)
FROM fund_acct AS acct
JOIN products AS prod ON acct.cusip = prod.cusip
WHERE prod.issuer_id = 'xxxx'
AND SUBSTR(acct.bin, 1, 1) = 'x'
GROUP BY acct.fund_acct_nbr, acct.bin, prod.issuer_id
))
GROUP BY issuer_id;
注意的Informix 10.00是長時間在外的支持。理想情況下,你應該升級到更新的版本 - 在這個階段,應該是12.10(過去幾年,它可能是11.10,11.50或11.70,但現在只有11.70是一個理論選項,不應該選擇) 。 –
請注意,即使12.10不支持WITH子句。使用10.00服務器的12.10語法圖不能保證令人高興 - 您需要10.00手冊,這些手冊可從https://www-01.ibm.com/support/docview.wss?uid=swg27039629獲取,一個頁面,記錄2010年10.00到達EOS(服務結束)。 –
你使用什麼工具生成'Failed queries => 2'消息?我不記得曾經看到過,這可能意味着我很幸運。 –