maxまたはminのブール式をnullif()statemtentに入れることは可能ですか?
例えば
select
min(a) as b ---grabbing first value
,max(a) as c --- grabbing last value but could be same as min value, this is the problem
,nullif(min(a), (min(a) = max(a))) ---my idea for a solution that didnt work
from table
フィールドの値が1回だけ発生する場合に、重複する行を削除しようとします。カウントしてから1を超える値を持つすべての値を取り除くことでこれを行う方法があるかもしれないと思っていますが、それを達成する方法がわかりません。sql server 2005で作業している場合、可能であればt-sqlでこれが必要ですが、サーバーで動作するものはすべて問題ありません。
編集して詳細情報を提供する:注文管理システムで注文のステータス履歴を確認しています。このシステムでは、IDで修正が要求されるたびにタグが付けられます。IDは一意で数値です。この形式1234では、各orderidは一意であり、この形式1111111.2でも数値です。aは一意の修正IDを表します。順序を確認したいと思います。ある修正IDがすでに発生している場合は、次の修正IDを取得し、可能であれば次の修正IDを取得します。少なくとも、MAX値とMIN値が必要です。最小値を2回カウントし(私の例を使用)、正確なデータが得られないため、2つの列を実行することはできません。
私の例では単純にしようとしていましたが、十分な情報が提供されていません。詳細は次のとおりです。
SELECT Cast(oi.orderid AS VARCHAR(MAX)) + '.'
+ Cast(oi.orderitemid AS VARCHAR(MAX)) AS OrderNumber,
Min(oici.orderitemcorrectionid) AS a,
Max(oici.orderitemcorrectionid) AS b
FROM Orderitems oi
LEFT JOIN orderitemcorrections oic
ON oic.orderid = oi.orderid
AND oic.orderitemid = oi.orderitemid
LEFT JOIN orderitemcorrectionissues oici
ON oici.orderitemcorrectionid = oic.orderitemcorrectionid
LEFT JOIN correctiontypes ct
ON ct.correctiontypeid = oici.correctiontypeid
GROUP BY Cast(oi.orderid AS VARCHAR(MAX)) + '.'
+ Cast(oi.orderitemid AS VARCHAR(MAX))
上記のクエリのサンプルテーブルデータ:
OrderNumber a b
1098048.1 1 2
1098210.1 160 160
1098222.1 78 78
1098300.1 31 31
1098408.1 4 4
1098462.1 224 224
1098468.1 602 602
1098492.2 1457 1457
上記はaとbが同じであるデータであり、以下はそれらが異なるデータですが、aからbへの重複をnullにしたい
1100268.1 181 191
1100256.1 306 379
行の重複を表示するためにグループ化されていない、より多くのデータ。-生データのサンプル
OrderNumber orderitemcorrectionid
1098048.1 1
1098048.1 2
1098210.1 160
1098210.1 160