查询 - 按返回重复行一列此查询
我有查询:查询 - 按返回重复行一列此查询
SELECT DISTINCT
"id",
"fn" || ' ' || "ln" || '/' || "bi" || '('|| TRUNC((months_between(sysdate, "bi") /12)) || ')/' || "pol" || '/ ' || "pol2" AS "INFO",
"cn" ,
"ci",
TO_CHAR("di" , 'DD-MON-YYYY') AS "DIST",
"cif" AS "Cand. Indp." AS "CIF FLAG",
TO_CHAR("ecd", 'DD-MON-YYYY') AS "ECD DATE",
trim(both '/' from ("DSD")) AS "DSD DATE",
trim(both '/' from ("TSD" )) AS "TSD DATE",
"com" AS "COMMENTS",
"SMF" AS "SM Flag"
FROM "MY_TABLE"
ORDER BY "ln";
我得到ORA-01791:不是一个选择的表达。
我GOOGLE了错误和问题似乎是独特的和顺序通过不一起工作。我试图通过分组而不是明确的并使用max(“ln”),但是对于连接的列,我无法弄清楚如何对它们进行分组。我正在寻找如何对ln上的结果进行排序?
您不受ORDER BY “LN” 选择
只能通过选择列,然后选择或添加选择
SELECT DISTINCT
"id",
"fn" || ' ' || "ln" || '/' || "bi" || '('|| TRUNC((months_between(sysdate, "bi") /12)) || ')/' || "pol" || '/ ' || "pol2" AS "INFO",
"ln",
"cn" ,
"ci",
TO_CHAR("di" , 'DD-MON-YYYY') AS "DIST",
"cif" AS "Cand. Indp." AS "CIF FLAG",
TO_CHAR("ecd", 'DD-MON-YYYY') AS "ECD DATE",
trim(both '/' from ("DSD")) AS "DSD DATE",
trim(both '/' from ("TSD" )) AS "TSD DATE",
"com" AS "COMMENTS",
"SMF" AS "SM Flag"
FROM "MY_TABLE"
ORDER BY "ln";
或
SELECT DISTINCT
"id",
"fn" || ' ' || "ln" || '/' || "bi" || '('|| TRUNC((months_between(sysdate, "bi") /12)) || ')/' || "pol" || '/ ' || "pol2" AS "INFO",
"cn" ,
"ci",
TO_CHAR("di" , 'DD-MON-YYYY') AS "DIST",
"cif" AS "Cand. Indp." AS "CIF FLAG",
TO_CHAR("ecd", 'DD-MON-YYYY') AS "ECD DATE",
trim(both '/' from ("DSD")) AS "DSD DATE",
trim(both '/' from ("TSD" )) AS "TSD DATE",
"com" AS "COMMENTS",
"SMF" AS "SM Flag"
FROM "MY_TABLE"
ORDER BY 2;
啊,我没有意识到它必须是select语句中它自己的独立列。有用! – user2924127
好..如果我的回答是正确的,请将其标为已接受.. – scaisEdge
SO让我等到我可以将其标记为已回答 – user2924127
'distinct'更改订单和'order by'一起工作。您只需要在选择列表中包含要排序的列。 'MY_TABLE'的主键是什么? –
@a_horse_with_no_name没有主键。这也是一个临时表。 – user2924127