で同じテーブルに参加し、私はDB2
col1 col2 col3
abc 123 A
abc 345 B
def 567 A
ghi 890 B
のようなテーブルは、私は要素に関連する1行のデータを持っていると思いますがあります。 Col3は弁別子の要素です。 「A」行と「B」行だけが関連しています。結果は次のようになります
col1 col2A col2B
abc 123 345
def 567 --
ghi -- 890
どうすればいいですか?
で同じテーブルに参加し、私はDB2
col1 col2 col3
abc 123 A
abc 345 B
def 567 A
ghi 890 B
のようなテーブルは、私は要素に関連する1行のデータを持っていると思いますがあります。 Col3は弁別子の要素です。 「A」行と「B」行だけが関連しています。結果は次のようになります
col1 col2A col2B
abc 123 345
def 567 --
ghi -- 890
どうすればいいですか?
自己結合を使用しない場合があります。もちろん
select
col1,
max(case col3 when 'A' then col2 else null end) col2A,
max(case col3 when 'B' then col2 else null end) col2B
from YourTable
group by col1
を、あなたは以下のようなデータを持っている場合、それは失敗します:これは、あなたがポストされたデータのために動作します
col1 col2 col3
abc 123 A
abc 345 B
abc 567 A
をもう一度、クエリは失敗しますが、あなたの全体のでしょうだけでなく、このようなデータがあればビジネスルールは失敗します。
各カテゴリには私は1つの値しか持てません。カテゴリAでは、abcは1回だけ存在することを意味します。 – Kayser
別の質問です。私もcol1のconcat操作があります。私はどのようにしてグループで書くことができますか。私はそのようにしようとしました: 'select CONCAT( ''、col1)col1Modified、 max(大文字のcol3の場合は 'A'、次にcol2の場合はnullの終わり)col2A、 max(大文字の場合は 'B'、次にcol2の場合はnull)col2B YourTableから グループby col1Modified' – Kayser
これは機能します。ありがとう.. – Kayser
この構文はSQL Serverで機能します。 DB2インスタンスもそこで動作することを確認するのに便利ですが、構文は合理的に標準です。
SELECT t0.col1, t1.col2 AS col2A, t2.col2 AS col2B
FROM (SELECT DISTINCT col1 FROM mytable) as t0 -- Select the list of keys
LEFT OUTER JOIN mytable t1 ON t0.col1=t1.col1 AND t1.col3='A' -- Join for col2A
LEFT OUTER JOIN mytable t2 ON t0.col1=t2.col1 AND t2.col3='B' -- Join for col2B
助けてくれてありがとう。 – Kayser
可能重複[自体にテーブルに参加](http://stackoverflow.com/questions/7794875/join-a-table-to-itself) – Ben
自体に参加@Benは類似しているが、その中にあります場合は、私は2つの行から1つの行を作成する必要があります。分別器を使って。あなたはそれが多くの他の質問の重複である – Kayser
を意味するものを理解すると、クエリを書くとそれを試すことができます。どちらの質問にも何度も尋ねられています:http://stackoverflow.com/search?q=poor+pivot+%5Btsql%5D – Ben