有沒有辦法做到這一點?只選擇1個數據,但行數仍然是3
來源:
(Select MBLNo,HBLNo from tblCargo where MBLNo = 'M00000001')
1 | M00000001 | H0003
2 | M00000001 | H0003
3 | M00000001 | H0003
要:
1 | M00000001 | H0003
2 | NULL | H0003
3 | NULL | H0003
有沒有辦法做到這一點?只選擇1個數據,但行數仍然是3
來源:
(Select MBLNo,HBLNo from tblCargo where MBLNo = 'M00000001')
1 | M00000001 | H0003
2 | M00000001 | H0003
3 | M00000001 | H0003
要:
1 | M00000001 | H0003
2 | NULL | H0003
3 | NULL | H0003
雖然我覺得這是更好地顯示數據的應用程序完成後,就可以在SQL:
select id,
case
when row_number() over (partition by mblno order by id) = 1 then mblno
else null
end as mblno
from tblcargo
where ...
OP並沒有提到rdbms –
@TimSchmelter:這是標準的ANSI SQL(標籤'sql'指的是)和所有[現代DBMS](http://modern-sql.com/)支持窗口函數 –
我沒有提到' t知道MySql支持'row_number' –
選中此項。
;WITH CTE
AS (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY MBLNO ORDER BY MBLNo) rno
FROM temp)
SELECT CASE
WHEN rno = 1
THEN MBLNo
ELSE NULL
END AS MBLNO,
HBLNo
FROM CTE;
所需的輸出:
MBLNo HBLNo
M00000001 H0003
NULL H0003
NULL H0003
你的樣本數據顯示三列,但你的SELECT語句只包含兩列。第一列從哪裏來? –
您正在使用哪個[DBMS](https://en.wikipedia.org/wiki/DBMS)產品? Postgres的?甲骨文? 「_SQL_」只是一種查詢語言,而不是特定數據庫產品的名稱。 –
改爲在表示層中修復它。 – jarlh