我有一個表名爲表具有以下內容:查詢與共享密鑰字段成單個結果列多行,每鍵
FormType KeyField Field AlphaValue NumericValue
-------- --------- ------- -------------------- -------------
A AAA001 A001 EXT 0.000000
A AAA001 A002 mail 0.000000
A AAA001 A003 190.000000
A AAA001 A004 [email protected] 0.000000
A ABC123 A001 DIST 0.000000
A ABC123 A002 something 0.000000
A ABC123 A003 215.000000
A BBB255 A002 delivery 0.000000
A BBB255 A003 94.000000
A CCC923 A002 TECH 0.000000
A DDD123 A004 [email protected] 0.000000
期望的結果需要是關鍵字段隨後每可能的字段(在這種情況下,A001,A002,A003,A004),類似的:
TypeA A001 A002 A003 A004
------- ------------ ------------ ----------- --------------------
AAA001 EXT mail 190.000000 [email protected]
ABC123 DIST something 215.000000
BBB255 delivery 94.000000
CCC923 TECH 0.000000
DDD123 0.000000 [email protected]
我一直在做這個,但並不真正反映所需的結果:
select
a.KeyField as 'TypeA',
b.AlphaValue as 'A001',
c.AlphaValue as 'A002',
d.NumericValue as 'A003',
e.AlphaValue as 'A004'
from (select distinct KeyField from Form where FormType = 'A') as a,
(select AlphaValue, KeyField from Form where FormType = 'A' and Field = 'A001') as b,
(select AlphaValue, KeyField from Form where FormType = 'A' and Field = 'A002') as c,
(select NumericValue, KeyField from Form where FormType = 'A' and Field = 'A003') as d,
(select AlphaValue, KeyField from Form where FormType = 'A' and Field = 'A004') as e
where
b.KeyField = a.KeyField
and c.KeyField = a.KeyField
and d.KeyField = a.KeyField
and e.KeyField = a.KeyField
前面的查詢結果:
TypeA A001 A002 A003 A004
------- ------------ ------------ ----------- --------------------
AAA001 EXT mail 190.000000 [email protected]
它只是跳過沒有爲每一個需要的領域,結果所有的鑰匙,當我需要的是必填字段不有一個匹配被替換爲空字符串或0.000000。
關於如何達到預期結果的任何想法?
您需要了解如何使用連接而不是逗號分隔的查詢。您編碼的方式是對每個查詢的內部連接。當你使用EAV模式的數據結構時,這是一個真正的問題。 –
如果您可以將您的示例發佈爲易於使用的東西,我可以幫助您構建查詢以從中獲取數據。這篇文章是一個很好的開始。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –