3
我有我的數據庫中的表,它看起來像(在表可以有相同的元組)的重複:如何消除同排
+-------------+---------+--------+
| ProductName | Status | Branch |
+-------------+---------+--------+
| P1 | dead | 1 |
| P1 | dead | 2 |
| P1 | dead | 2 |
| P2 | expired | 1 |
+-------------+---------+--------+
我想要顯示的結果後爲(科屬性是動態的):
+-------------+---------+--------+
| ProductName | Branch 1|Branch 2|
+-------------+---------+--------+
| P1 | dead | dead|
| P2 | expired | OK |
+-------------+---------+--------+
後一些幫助,我想出了以下解決方案:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'GROUP_CONCAT(case when branch = ''',
branch,
''' then status ELSE NULL end) AS ',
CONCAT('Branch',branch)
)
) INTO @sql
FROM Table1;
SET @sql = CONCAT('SELECT productName, ', @sql, '
FROM Table1
GROUP BY productName');
PREPARE stmt FROM @sql;
EXECUTE stmt;
中示出的結果是這樣的:
+-------------+---------+-----------+
| productName | Branch1 | Branch2 |
+-------------+---------+-----------+
| p1 | dead | dead,dead |
| p2 | expired | (null) |
+-------------+---------+-----------+
SQL Fiddle。
我現在想要的是當狀態爲空時顯示產品狀態爲「OK」而不是null,並且如果表中存在重複的產品,則不需要連接狀態..嘗試了很多,但無法整理。提前致謝。
那偉大@Minhai外..我之前嘗試了COALESCE(),但是把它放在錯誤的地方:)。 「分支」這個詞與分支的名字連接在一起..我可以刪除它......我只需要在表頭中的分支名稱。我已經嘗試過,但無法整理出來。再次感謝。 – Hasnain