我通过以下方式在表格中提供了一些联系人数据。
Contact_Name Contact Details
Acting Generals Office ABCD
BlackBerryOffice A1B1
BBM Help X1Y1
Customer Care A2B2
D_Link Routers A3B3
现在在一个页面中,我必须以这种方式在我的 ASP.NET页面中显示数据 - (每个条目的第一个字符以及具有该字符的所有条目)
代理将军办公室
BlackBerryOffice BBM帮助
客户服务
D_Link路由器
有关详细信息,请参阅下图。
单击代理常规办公室,BlackBerryOffice,客户服务中心,D_Link路由器将重定向到新页面,其中将显示相应的contact_details。 (通过点击代理将军办公室将会打开)
Acting Generals Office ABCD
请帮助我。
答案 0 :(得分:0)
您能提供想要获得的样本输出吗?因为通过查看你的问题很难说出你真正需要什么。现在,尝试这个并提供反馈,如果它是你想要的:
CREATE TABLE contacts (
contact_name VARCHAR2(40),
contact_details VARCHAR2(20)
);
INSERT INTO contacts VALUES ('Acting Generals Office', 'ABCD');
INSERT INTO contacts VALUES ('BlackBerryOffice', 'A1B1');
INSERT INTO contacts VALUES ('Customer Care', 'A2B2');
INSERT INTO contacts VALUES ('D_Link Routers', 'A3B3');
COMMIT;
-- show all letters, even when there are no contacts belonging to any of them
WITH letters AS (
SELECT CHR(65 + level - 1) AS letter
FROM dual
CONNECT BY level <= ASCII('Z') - ASCII('A') + 1
)
SELECT lt.letter, ct.contact_name
FROM letters lt
LEFT JOIN contacts ct ON (lt.letter = UPPER(SUBSTR(ct.contact_name, 1, 1)))
ORDER BY 1, 2
;
Output:
LETTER CONTACT_NAME
------ ----------------------------------------
A Acting Generals Office
B BlackBerryOffice
C Customer Care
D D_Link Routers
E
F
.
.
.
Z
-- Output only those letters where there are associated contacts
SELECT SUBSTR(contact_name, 1, 1), contact_name
FROM contacts
ORDER BY 1, 2
;
Output:
SUBSTR(CONTACT_NAME,1,1) CONTACT_NAME
------------------------ ----------------------------------------
A Acting Generals Office
B BlackBerryOffice
C Customer Care
D D_Link Routers
尝试使用SQLFiddle: SQLFiddle example