これには方法がありますか?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 ...
オペレーションはrdbmsに言及していません –
@TimSchmelter:これは標準のANSI SQLです( 'sql'というタグが参照されています)、すべての[Modern DBMS](http://modern-sql.com/)はウィンドウ関数をサポートします –
I didn ' 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
あなたのサンプルデータの3つの列を示しているが、あなたのSELECT文では2つのだけの列が含まれています。最初の列はどこから来たのですか? –
どの[DBMS](https://en.wikipedia.org/wiki/DBMS)製品を使用していますか? Postgres?オラクル? "_SQL_"はクエリ言語であり、特定のデータベース製品の名前ではありません。 –
代わりにプレゼンテーションレイヤーで修正します。 – jarlh