Q
は、SQL
0
A
答えて
0
テーブルスキーマ:
CREATE TABLE Items
(
ItemCode VARCHAR(10),
Color INT,
Size VARCHAR(10),
Rack VARCHAR(10),
RACK1 INT,
NUM INT
)
データ:
INSERT INTO Items VALUES
('LY-164', 1, 'L', 'LT', 74, NULL),
('LY-164', 1, 'M', 'LT', 75, NULL),
('LY-164', 1, 'XL', 'LT', 67, NULL),
('LY-164', 1, 'XXL', 'LT', 70, NULL),
('LY-178', 1, 'L', 'LT', 104, NULL),
('LY-178', 1, 'L', 'LT', 109, NULL),
('LY-178', 1, 'M', 'LT', 122, NULL),
('LY-178', 1, 'M', 'LT', 122, NULL),
('LY-178', 1, 'XL', 'LT', 108, NULL),
('LY-178', 1, 'XL', 'LT', 109, NULL),
('LY-178', 1, 'XXL', 'LT', 108, NULL)
あなたがこれを使用することができ、あなたのテーブルの主キーを持っていない場合。ここでは、まずnull値を削除してから挿入します。
; WITH CTE AS
(
SELECT ItemCode, Color, Size, Rack, Rack1
, ROW_NUMBER() OVER (PARTITION BY ItemCode, Color, Size, Rack, Rack1 ORDER BY ItemCode, Color, Size, Rack, Rack1) AS RN
FROM Items
)
INSERT INTO Items
SELECT * FROM CTE
DELETE FROM Items WHERE NUM IS NULL
SELECT * FROM Items
これは、RDBMSはこのです(ひと味違うの更新、SQLでの黒魔術の1)
DECLARE @ItemCode VARCHAR(10)
DECLARE @Color INT
DECLARE @Size VARCHAR(10)
DECLARE @Rack VARCHAR(10)
DECLARE @RACK1 INT
DECLARE @NUM INT = 1
UPDATE A
SET
@NUM = IIF(@ItemCode IS NULL OR @ItemCode <> A.ItemCode OR @Color <> A.Color OR @Size <> A.Size OR @Rack <> A.Rack OR @RACK1 <> A.RACK1, 1, @Num + 1),
@ItemCode = A.ItemCode,
@Color = A.Color,
@Size = A.Size,
@Rack = A.Rack,
@RACK1 = A.RACK1,
A.Num = @NUM
FROM Items A
SELECT * FROM Items
回答
LY-164 1 L LT 74 1
LY-164 1 M LT 75 1
LY-164 1 XL LT 67 1
LY-164 1 XXL LT 70 1
LY-178 1 L LT 104 1
LY-178 1 L LT 109 1
LY-178 1 M LT 122 1
LY-178 1 M LT 122 2
LY-178 1 XL LT 108 1
LY-178 1 XL LT 109 1
LY-178 1 XXL LT 108 1
+0
'SQL Server 2012 + 'に特有のものは' SQL SERVER 2008'でも使えるはずです –
+0
Tanjimありがとうございました。 –
+0
乾杯。私は気まぐれに投票する – Esty
関連する問題
- 1. はPostgresのSQLまたはマイSQLは
- 2. SQLはSQL以下で
- 3. SQLのDATE_FORMAT()()SQLでは
- 4. は、SQL Server 2005ではSQL Serverの
- 5. SQLは
- 6. は、SQL
- 7. は、SQL
- 8. は、SQL
- 9. は、SQL
- 10. は、SQL
- 11. は、SQL
- 12. は 、SQL
- 13. は、SQL
- 14. は、SQL
- 15. SQLは
- 16. SQLは
- 17. SQLは
- 18. は、SQL
- 19. SQLは
- 20. は、SQL
- 21. SQLは
- 22. は、SQL
- 23. は、SQL
- 24. SQLは
- 25. SQLは
- 26. SQLは
- 27. SQLは
- 28. SQLは
- 29. SQLは
- 30. は、SQL
別のアプローチですか? 'mysql'、' postgresql'、 'sql-server'、' oracle'、 'db2'のどれかを指定するタグを追加してください。 –
すべての列が等しい場合にのみ増分が必要ですか? –
はい、すべての列が等しい場合は増分してください。 –